آموزش Visibility (آشکار بودن) در سی شارپ

رتبه: 0 ار 0 رای sssss
Visibility
نویسنده: میلاد حیدری زمان مطالعه 4 دقیقه
Banner Image

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

1.private

سطح دسترسی `private` محدودترین سطح دسترسی است. اعضای `private` فقط در داخل همان کلاس یا ساختار قابل دسترسی هستند و از بیرون هیچ دسترسی به آن‌ها وجود ندارد. این سطح دسترسی معمولاً برای متغیرها و متدهایی که فقط باید در داخل کلاس استفاده شوند، مناسب است.

class MyClass

{

    private int myPrivateField;

 

    private void MyPrivateMethod()

    {

        // Only accessible within MyClass

    }

}

 

2.protected

سطح دسترسی `protected` به اعضای کلاس اجازه می‌دهد که علاوه بر کلاس خود، در کلاس‌های مشتق شده (زیرکلاس‌ها) نیز قابل دسترسی باشند. این سطح دسترسی برای زمانی مناسب است که بخواهید اعضایی را در اختیار کلاس‌های فرزند قرار دهید اما از دسترسی مستقیم خارج از سلسله مراتب وراثت جلوگیری کنید.

class BaseClass

{

    protected int myProtectedField;

    protected void MyProtectedMethod()

    {

        // Accessible in derived classes

    }

}

class DerivedClass : BaseClass

{

    void AccessProtectedMembers()

    {

        myProtectedField = 5; // Accessible

        MyProtectedMethod(); // Accessible

    }

}

 

3.internal

سطح دسترسی `internal` اجازه می‌دهد اعضای کلاس فقط در داخل همان اسمبلی (پروژه) قابل دسترسی باشند. این سطح دسترسی زمانی مفید است که بخواهید اعضا در تمام کدهای موجود در یک پروژه مشترک قابل دسترسی باشند ولی از دسترسی بیرونی جلوگیری شود.

class MyClass

{

    internal int myInternalField;

    internal void MyInternalMethod()

    {

        // Accessible within the same assembly

    }

}

 

4.protected internal

ترکیب `protected internal` اجازه می‌دهد اعضا در داخل همان اسمبلی و همچنین در کلاس‌های مشتق شده خارج از اسمبلی قابل دسترسی باشند. این سطح دسترسی می‌تواند در مواقعی مفید باشد که نیاز به اشتراک‌گذاری اعضا در یک اسمبلی و همچنین در زیرکلاس‌های خارجی دارید.

{

    protected internal int myProtectedInternalField;

 

    protected internal void MyProtectedInternalMethod()

    {

        // Accessible within the same assembly and derived classes outside the assembly

    }

}

 

5.private protected

ترکیب `private protected` اجازه می‌دهد اعضا فقط در داخل همان کلاس یا کلاس‌های مشتق شده در همان اسمبلی قابل دسترسی باشند. این سطح دسترسی محدودتر از `protected internal` است و زمانی استفاده می‌شود که بخواهید اعضا فقط در محدوده‌ی سلسله مراتب وراثت در همان اسمبلی قابل دسترسی باشند.

class MyClass

{

    private protected int myPrivateProtectedField;

 

    private protected void MyPrivateProtectedMethod()

    {

        // Accessible within the same class and derived classes in the same assembly

    }

}

 

6.public

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

class MyClass

{

    public int myPublicField;

 

    public void MyPublicMethod()

    {

        // Accessible everywhere

    }

}

مثال کامل از استفاده سطوح دسترسی

در این مثال، نحوه استفاده از سطوح دسترسی مختلف در یک کلاس و دسترسی به آن‌ها از کلاس‌های دیگر را مشاهده می‌کنید:

using System;

 

namespace AccessModifiersExample

{

    class BaseClass

    {

        private int privateField = 1;

        protected int protectedField = 2;

        internal int internalField = 3;

        protected internal int protectedInternalField = 4;

        private protected int privateProtectedField = 5;

        public int publicField = 6;

 

        public void ShowFields()

        {

            Console.WriteLine($"privateField: {privateField}");

            Console.WriteLine($"protectedField: {protectedField}");

            Console.WriteLine($"internalField: {internalField}");

            Console.WriteLine($"protectedInternalField: {protectedInternalField}");

            Console.WriteLine($"privateProtectedField: {privateProtectedField}");

            Console.WriteLine($"publicField: {publicField}");

        }

    }

 

    class DerivedClass : BaseClass

    {

        public void AccessFields()

        {

            // Console.WriteLine(privateField); // Not accessible

            Console.WriteLine(protectedField); // Accessible

            Console.WriteLine(internalField); // Accessible within the same assembly

            Console.WriteLine(protectedInternalField); // Accessible

            Console.WriteLine(privateProtectedField); // Accessible within the same assembly

            Console.WriteLine(publicField); // Accessible

        }

    }

 

    class Program

    {

        static void Main(string[] args)

        {

            BaseClass baseObj = new BaseClass();

            baseObj.ShowFields();

 

            DerivedClass derivedObj = new DerivedClass();

            derivedObj.AccessFields();

 

            // Accessing from outside

            Console.WriteLine(baseObj.internalField); // Accessible

            Console.WriteLine(baseObj.protectedInternalField); // Accessible

            Console.WriteLine(baseObj.publicField); // Accessible

            // Console.WriteLine(baseObj.privateField); // Not accessible

            // Console.WriteLine(baseObj.protectedField); // Not accessible

            // Console.WriteLine(baseObj.privateProtectedField); // Not accessible

        }

    }

}

نتیجه‌گیری

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

profile name
میلاد حیدری

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

مطالب پیشنهادی برای شما

محصولات مرتبط

مشاهده همه
آموزش برنامه نویسی سی پلاس پلاس
آموزش برنامه نویسی سی پلاس پلاس
قیمت محصول 230,000 تومان 250,000
ادامه مطلب

دیدگاهتان را بنویسید

1 2 3 4 5

0 نظر درباره «آموزش Visibility (آشکار بودن) در سی شارپ»

    هنوز نظری برای این بخش ثبت نشده است
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید