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

عمومی Public : در این حالت عنصر به صورت عمومی تعریف شده و از هر جای برنامه توسط هر عنصر دیگر مثل سایر کلاس ها و توابع قابل دسترسی است. این حالت دارای حداقل محدودیت برای عنصر بوده و Enums و Interface ها به صورت پیش فرض public هستند.
محافظت شده یا Protected : در این حالت عنصر فقط توسط عوامل هم کلاس خود یا عوامل موجود در کلاس هایی که از کلاس آن به ارث رفته اند، قابل دسترس است.
درونی یا internal : در این حالت عنصر فقط درون پروژه جاری قابل دسترسی است.
درونی محافظت شده یا Protected internal : این حالت، همانند حالت internal است با این تفاوت که عناصر موجود در کلاس هایی که از کلاس عنصر به ارث رفته اند، حتی اگر در پروژه های دیگر باشند قابلیت دسترسی به آن را دارند.
خصوصی یا Private : در این حالت فقط عوامل هم کلاس عنصر امکان دیدن و دسترسی به آیتم مورد نظر را دارند. این حالت دارای بیشترین میزان محدودیت بوده و Class ها و Struct ها به صورت پیش فرض خصوصی private هستند.

برای مثال، اگر شما دارای دو کلاس به نام های Class 1 و Class 2 باشید، اعضای private مربوط به Class 1 فقط درون خود آن کلاس قابل دسترس هستند. شما نمی توانید یک نمونه از اشیای Class 1 را در Class 2 ساخته و امکان دسترسی به آن ها را داشته باشید.
اما اگر Class 2 از Class 1 به ارث رفته یاشد (فرزند آن باشد) که در اصطلاح می گوییم inherit شده، فقط اعضای غیر private کلاس ۱ در کلاس ۲ قابل دسترس هستند.