TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 549 subscribers
Post #256 110
📖 سری آموزشی کتاب C# 12 in a Nutshell

🛡راهنمای کامل Access Modifiers در #C: چه کسی کد شما را می‌بیند؟

در برنامه‌نویسی شیءگرا، کپسوله‌سازی (Encapsulation) یعنی مخفی کردن جزئیات پیاده‌سازی و فقط نمایش دادن چیزهای ضروری. ابزار اصلی ما برای این کار در C# Access Modifiers هست.

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

معرفی نگهبانان
🌍 public (عمومی):

درب‌های کاملاً باز! هر کسی از هر جایی (چه داخل اسمبلی و چه بیرون) می‌تونه ببینه و استفاده کنه.

🏢 internal (داخلی):

فقط خودی‌ها! فقط کدهای داخل همون اسمبلی (پروژه) می‌تونن ببینن. این حالت پیش‌فرض برای کلاس‌های غیر تودرتو است.

🔐 private (خصوصی):

راز شخصی! فقط کدهای داخل همون کلاس یا struct می‌تونن ببینن. این حالت پیش‌فرض برای اعضای کلاس‌ها (مثل فیلدها و متدها) هست.

👨‍👩‍👧 protected (محافظت شده):

فقط خانواده! فقط کدهای داخل همون کلاس و کلاس‌های فرزندی که ازش ارث‌بری کردن، می‌تونن ببینن.

🤝 protected internal:

خودی‌ها و خانواده! اجتماع protected و internal. یعنی هم از داخل اسمبلی جاری دیده میشه و هم توسط کلاس‌های فرزند (حتی اگه تو یه اسمبلی دیگه باشن).

🤫 private protected:

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

📄 file (از C# 11):

فقط همین فایل! اعضایی که با file مشخص میشن، فقط در همون فایلی که تعریف شدن، قابل مشاهده هستن. این بیشتر برای Source Generatorها کاربرد داره.

نکات حرفه‌ای (Pro Tips) 💡
Friend Assemblies:
گاهی وقتا می‌خواید به یه پروژه دیگه (مثل پروژه تست) اجازه بدید که به اعضای internal شما دسترسی داشته باشه. با اتریبیوت [assembly: InternalsVisibleTo("FriendAssemblyName")] در فایل AssemblyInfo.cs یا .csproj می‌تونید این کار رو انجام بدید.

Accessibility Capping (سقف دسترسی):
سطح دسترسی یک تایپ، سطح دسترسی اعضای public اون رو محدود می‌کنه. یعنی یه متد public داخل یه کلاس internal، در عمل internal حساب میشه.

🤔 حرف حساب و تجربه شما

انتخاب درست Access Modifier، یکی از مهم‌ترین تصمیم‌ها در طراحی APIهای تمیز و قابل نگهداریه.

🔖 هشتگ‌ها:
#OOP #Encapsulation
More from @csharpgeeks
  1. Sep 22, 2026یه مدتی قراره از دنیای NET. فاصله بگیرم، چون وقتشه برم سربازی. راستش نمیدونم این مدت رو چج…
  2. Sep 20, 2026🔥 حالا مشکل اصلی: Alert Storm فرض کن Database از دسترس خارج شده. ۱۰۰ Pod داری. هر Pod می‌…
  3. Sep 20, 2026🚨 طراحی سیستم Monitoring و Alerting در یک سیستم بزرگ فرض کن ساعت ۳ صبح است. سیستم شما با…
  4. Sep 19, 2026#Engineering_Leadership تصمیم نگرفتن هم یک تصمیم است یه چیز عجیب توی تیم‌های مهندسی: گاهی…
  5. Sep 19, 2026☑ چک‌لیست آماده‌سازی تیم، فرایندها و زیرساخت برای توسعه با AI توجه: هیچ چک‌لیستی جهان‌شمول…
  6. Sep 19, 2026📌پایان یک انتظار طولانی: اعتبارسنجی ناهمگام (Async Validation) در NET 11.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →