چه تکنولوژی می‌خواهید یاد بگیرید؟

نظرات و انتقادات خود را با ما در میان بگذارید.

آپدیت روزانه

بیش از 1000 پست آموزشی

نیازهای روز

سطح دسترسی در زبان سی شارپ

اصلاح دسترسی تعریف شده جهت سطح مجوز برای دسترسی کلاس‌ها، متدها و ... بکار گرفته می‌شود، با تعریف اصلاح دسترسی برای اعضا موجود در کلاس، قادر خواهیم بود در اسمبلی‌ و کلاس‌های دیگر با توجه به نوع دسترسی به آن شی دسترسی پیدا کنیم.

سطح دسترسی:

در زبان سی شارپ 5 نوع سطح دسترسی وجود دارد:

  1. Public
  2. Private
  3. Internal
  4. Protected
  5. Protected Internal

Public:

دسترسی public عام می‌باشد، به موجب این سطح دسترسی شی موجود تعریف شده در خارج از کلاس قابل دسترس خواهد بود.

class ClassTest
{
    /// <summary>
    /// Public method
    /// </summary>
    public void MethodPublic()
    {
        // TODO: defination of MethodPublic
    }
}

/// <summary>
/// To access the method
/// </summary>
class Program
{
    static void Main(string[] args)
    {
        ClassTest objClassTest = new ClassTest();
        // Valid code to access.
        objClassTest.MethodPublic(); 
    }
}

Private:

با استفاده از این نوع سطح دسترسی به منظور بکارگیری برای اعضا کلاس فقط قادر خواهیم بود در همان کلاس از آنها استفاده شود و در خارج از کلاس قابل دسترس نمی‌باشد. در صورتی که سازنده پیشفرض کلاس با این نوع سطح دسترسی ایجاد شود دیگر قادر نخواهیم بود از کلاس نمونه ایجاد نمایم البته اغلب زمانی سازنده کلاس Private در نظر گرفته می‌شود که توسعه‌دهنده قصد به پیاده سازی الگوی Singleton دارد.

class ClassTest
{
    /// <summary>
    /// Private method
    /// </summary>
    private void MethodPrivate()
    {
        // TODO: Defination of MethodPrivate
    }
}
/// <summary>
/// To access the method
/// </summary>
class Program
{
    static void Main(string[] args)
    {
        ClassTest objClassTest = new ClassTest();
        // Invalid code to access.
        objClassTest.MethodPrivate(); 
    }
}

در صورتی که سازنده پیشفرض کلاس با سطح دسترسی private در نظر گرفته شود:

class ClassTest
{
    private ClassTest() { } // private constructor
}
/// <summary>
/// To access the method
/// </summary>
class Program
{
    static void Main(string[] args)
    {
        // Invalid code. can't create an object of this class
        ClassTest objClassTest = new ClassTest();
    }
}

نکته: امکان اضافه کردن سطح دسترسی private برای کلاس وجود ندارد.

Protected:

این سطح دسترسی همانند سطح دسترسی private هستش با این تفاوت که در صورتی به ارث برود اعضا موجود این کلاس در کلاس دیگر موجود خواهد بود.

class ClassTest
{
    //Protected variable
    protected int _a;
}

class ClassTest2 : ClassTest
{
    ClassTest2()
    {
        // Can access from this class
        this._a = 10; 
    }
}

نکته: امکان اضافه کردن سطح دسترسی protected برای کلاس وجود ندارد.

Internal:

تنها در داخل فایل یا اسمبلی فعلی قابل استفاده خواهند بود.

class ClassTest
{
    internal void MethodInternal()
    {
        // TODO: do your code
    }
}
/// <summary>
/// To access the method
/// </summary>
class Program
{
    static void Main(string[] args)
    {
        ClassTest objClassTest = new ClassTest();
        // valid code to access.
        objClassTest.MethodInternal(); 
    }
}

Protected Internal:

سطح دسترسی دیگری نیز وجود دارد تحت عنوان protected internal این سطح دسترسی در همان اسمبلی تعریف شده قابل دسترسی است و علاوه بر آن اگر کلاسی از آن ارث بری کند نیز قابل دسترسی است . در واقع برابر با internal +protected است.

class ClassTest
{
    // Protected internal
    protected internal string name; 
    public void print()
    {
        Console.WriteLine("\nMy name is " + name);
    }
}
/// <summary>
/// To access the method
/// </summary>
class Program
{
    static void Main(string[] args)
    {
        ClassTest objClassTest = new ClassTest();
        // Accepting value in protected internal variable
        objClassTest.name = "Arka";
        objClassTest.print();
    }
}

...

امید نصری

0 نظر:

تعداد دیدگاه‌های کاربران : 0 دیدگاه
مهمان گرامی! برای ارسال نظر نیاز است وارد سایت شوید.


You must log on to comment.