
صلاح دسترسی تعریف شده جهت سطح مجوز برای دسترسی کلاسها، متدها و ... بکار گرفته میشود، با تعریف اصلاح دسترسی برای اعضا موجود در کلاس، قادر خواهیم بود در اسمبلی و کلاسهای دیگر با توجه به نوع دسترسی به آن شی دسترسی پیدا کنیم.
در زبان سی شارپ ۵ نوع سطح دسترسی وجود دارد:
دسترسی public عام میباشد، به موجب این سطح دسترسی شی موجود تعریف شده در خارج از کلاس قابل دسترس خواهد بود.
class ClassTest
{
///
/// Public method
///
public void MethodPublic()
{
// TODO: defination of MethodPublic
}
}
///
/// To access the method
///
class Program
{
static void Main(string[] args)
{
ClassTest objClassTest = new ClassTest();
// Valid code to access.
objClassTest.MethodPublic();
}
}
با استفاده از این نوع سطح دسترسی به منظور بکارگیری برای اعضا کلاس فقط قادر خواهیم بود در همان کلاس از آنها استفاده شود و در خارج از کلاس قابل دسترس نمیباشد. در صورتی که سازنده پیشفرض کلاس با این نوع سطح دسترسی ایجاد شود دیگر قادر نخواهیم بود از کلاس نمونه ایجاد نمایم البته اغلب زمانی سازنده کلاس Private در نظر گرفته میشود که توسعهدهنده قصد به پیاده سازی الگوی Singleton دارد.
class ClassTest
{
///
/// Private method
///
private void MethodPrivate()
{
// TODO: Defination of MethodPrivate
}
}
///
/// To access the method
///
class Program
{
static void Main(string[] args)
{
ClassTest objClassTest = new ClassTest();
// Invalid code to access.
objClassTest.MethodPrivate();
}
}
در صورتی که سازنده پیشفرض کلاس با سطح دسترسی private در نظر گرفته شود:
class ClassTest
{
private ClassTest() { } // private constructor
}
///
/// To access the method
///
class Program
{
static void Main(string[] args)
{
// Invalid code. can't create an object of this class
ClassTest objClassTest = new ClassTest();
}
}
نکته: امکان اضافه کردن سطح دسترسی private برای کلاس وجود ندارد.
این سطح دسترسی همانند سطح دسترسی private هستش با این تفاوت که در صورتی به ارث برود اعضا موجود این کلاس در کلاس دیگر موجود خواهد بود.
class ClassTest
{
//Protected variable
protected int _a;
}
class ClassTest۲ : ClassTest
{
ClassTest۲()
{
// Can access from this class
this._a = ۱۰;
}
}
نکته: امکان اضافه کردن سطح دسترسی protected برای کلاس وجود ندارد.
تنها در داخل فایل یا اسمبلی فعلی قابل استفاده خواهند بود.
class ClassTest
{
internal void MethodInternal()
{
// TODO: do your code
}
}
///
/// To access the method
///
class Program
{
static void Main(string[] args)
{
ClassTest objClassTest = new ClassTest();
// valid code to access.
objClassTest.MethodInternal();
}
}
سطح دسترسی دیگری نیز وجود دارد تحت عنوان protected internal این سطح دسترسی در همان اسمبلی تعریف شده قابل دسترسی است و علاوه بر آن اگر کلاسی از آن ارث بری کند نیز قابل دسترسی است . در واقع برابر با internal +protected است.
class ClassTest
{
// Protected internal
protected internal string name;
public void print()
{
Console.WriteLine("nMy name is " + name);
}
}
///
/// To access the method
///
class Program
{
static void Main(string[] args)
{
ClassTest objClassTest = new ClassTest();
// Accepting value in protected internal variable
objClassTest.name = "Arka";
objClassTest.print();
}
}
برچسب:
نویسنده: مریم اسدیان