سطوح دسترسی (Access Modifiers) در C#

Public : در هرجایی از کلاس

Private : فقط داخل کلاس

Protected : تنها در آن کلاس و زیرکلاس هایش

Internal : داخل assemly کلاس

Protected Intenal : داخل آن کلاس، زیرکلاس هایش و assembly

Access Modifiers

Access Modifiers سطح مشخصی از مجوز برای دسترسی به خصوصیات و متدها می باشد. با اعلام تغییر دسترسی یک متغیر تعریف می کنیم یا حتی می توانیم از assembly به داخل کلاس دسترسی داشت.

Public

با استفاده از public یک رویداد یا متغیر می تواند از خارج از کلاس قابل دستیابی باشد. جایی که متعلق به آن است. و همینطور خارج از assembly

Private

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

مثالی از کلیدواژه Private

مثالی از private Constructor

Protected

protected اجازه دسترسی متغیرها و متدها از کلاس و زیرکلاس را می دهد. بدین معنا که متدها می توانند از داخل کلاس و کلاسی که از آن ارث بری کرده است قابل دسترسی باشند.

Internal

internal در #C معرفی شده است. در جاوا ما این سطح دسترسی را نداریم. این دستیابی بعد از Protected می باشد. protected اجازه دستیابی از کلاس و زیرکلاس را می دهد.  assembly را به آن اضافه می کند. بدین معنا که متغیرها ومتدها می توانند درون assemly جایی که کلاس به آن تعلق دارد قابل دسترسی باشند. assembly و NameSpace اندکی متفاوت می باشند. یک assembly می تواند بیش از یک namespace را نگهداری کند. assemblyها در واقع Dllهای یک پروژه می باشند.

Protected Internal

اجازه دسترسی از کلاس و زیرکلاس را می دهد. هچنین اجازه دسترسی از همان assembly را می دهد. بدین معنا که در protected اگر کلاس ارث بری کرده باشد، super class و متد یا متغیر protected می باشند، سپس دسترسی assembly مهم نیست. اما در Internal اگر کلاس ارث بری کرده باشد assembly مهم می باشد. در زیر می بینید که چرا از Protected Internal استفاده می کنیم.