Access Modifier ها در سی شارپ

Access Modifier ها در سی شارپ

۲ دیدگاه

Access Modifier چیست؟

Access Modifier ها در سی شارپ تعدادی از کلمات کلیدی در سی شارپ هستند. Access Modifier ها مشخص می کنند یک Data Type و یا Member در چه سطح دسترسی تعریف شده اند. بنا به سطح دسترسی، مشخص می شود چگونه و از کجا به عنصر مورد نظر دسترسی خواهیم داشت. Access Modifier ها در زبان سی شارپ عبارتند از:

Access Level ها یا سطوح دسترسی در سی شارپ

سطوح دسترسی مشخص کننده حوزه دید Data Type و یا Member مربوطه است. در برخی حوزه های دید، سایر Data Type ها ممکن است بتوانند به عنصر مورد نظر دسترسی داشته. همچنین در برخی دیگر از Access Level ها امکان رویت آن عناصر می تواند .جود نداشته باشد. برای درک بهتر سطوح دسترسی، هر یک را جداگانه بررسی خواهیم کرد.

سطح دسترسی public

public بالاترین سطح دسترسی است. Data Type و یا Member تعریف شده با این سطح دسترسی، از همه جا قابل دسترس و رویت می باشد. کدها چه داخل همان Data Type، چه خارج از آن، به عنصر مورد نظر دسترسی دارند. همچنین در همان اسمبلی و از اسمبلی های دیگر به عنصر public دسترسی وجود دارد.

Access Modifier ها در سی شارپ سطح دسترسی public در سی شارپ
در این مثال فیلد Email از نوع string در سطح دسترسی public تعریف شده است. این فیلد در کلاس Account و از همه جا قابل دسترس می باشد. (برای آشنایی با Class ها مطلب Class ها در سی شارپ را مطالعه نمایید).

سطح دسترسی internal

سطح دسترسی internal مانند سطح دسترسی public می باشد. با این تفاوت که تنها عناصری که در همان اسمبلی هستند می توانند عنصر internal را ببینند. کد های خارج از اسمبلی قادر به دسترسی و رویت عنصر internal نیستند. در واقع می توانید سطح دسترسی internal را یک نوع سطح دسترسی public ولی محدود به اسمبلی در نظر بگیرید.
Access Modifier ها در سی شارپ سطح دسترسی internal در سی شارپ

در مثال بالا فیلد Permission از نوع string در سطح دسترسی internal تعریف شده است. یه همسن دلیل فقط در اسمبلی خودش فابل دسترس می باشد.

سطح دسترسی private

private پایین ترین سطح دسترسی می باشد. عناصری که به صورت private تعریف شده یاشند فقط در همان Data Type قابل دسترس می باشند. در واقع Member های private فقط توسط سایر Member های همان Data Type قابل دسترس هستند.

Access Modifier ها در سی شارپ سطح دسترسی private در سی شارپ

در مثال فوق فیلد Password از نوع string در سطح دسترسی private تعریف شده است. به همین دلیل در سایر Member های کلاس Account به آن دسترسی دارند. ولی خارج از کلاس Account این فیلد قابل دسترس نمی باشد.

سطح دسترسی protected

سطح دسترسی protected مشابه سطح دسترسی private می باشد. با این تفاوت که عناصر protected، در همان Data Type و فرزندان آن قابل دسترس خواهند بود. (برای آشنایی بیشتر با مفهوم Inheritance مطلب: مبانی برنامه نویسی شیء گرا – وراثت را مطالعه نمایید).

Access Modifier ها در سی شارپ سطح دسترسی protected در سی شارپ

در مثال بالا فیلد Speed از نوع long در سطح دسترسی protected تعریف شده است. بنابر این فقط در سایر Member های کلاس Car و کلاس SportCar به عنوان child کلاس Car به آن دسترسی وجود دارد.

سطح دسترسی protected internal

با توجه به آشنایی با سطوح دسترسی protected و internal، درک سطح دسترسی protected internal سخت نیست. در واقع protected internal ترکیب دو سطح دسترسی protected و internal است. Member هایی با این سطح دسترسی، به دلیل internal بودن فقط در همان اسمبلی قابل دسترس هستند. همزمان به دلیل protected بودن، فقط محدود به خود Data Type و فرزندان آن خواهند بود. بنابر این فرزندان خارج از اسمبلی قادر به رویت این Member ها نخواهند بود.

به مثال زیر توجه کنید:

Access Modifier ها در سی شارپ سطح دسترسی protected internal در سی شارپ

در مثال بالا فیلد Speed از نوع long در سطح دسترسی protected internal تعریف شده است. بنابراین فقط در سایر Member های کلاس Car و کلاس SportCar به آن دسترسی دارند. ولی Member های کلاس Truck با وجود اینکه فرزند کلاس Car می باشد، به این فیلد دسترسی ندارند.

آواتار کاربر

شهاب ساری اصلانی

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

۲ دیدگاه

  1. مهر ۱۶, ۱۴۰۰

    واقعا ممنونم از شما استاد شهاب ساری اصلانی
    خیلی مطالبتون مفید هستند
    ایشالا سالم و موفق باشید

    • آواتار کاربر
      مهر ۲۱, ۱۴۰۰

      خوشحالیم که از مطالب استفاده میکنید
      ممنون از شما

ارسال یک دیدگاه

آدرس ایمیل شما منتشر نخواهد شد.