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

📦 کلاس در کلاس: راهنمای کامل Nested Types در #C

تا حالا شده یه کلاسی بنویسید که اونقدر به یه کلاس دیگه وابسته باشه که انگار باید جزئی از اون باشه؟ یا بخواید یه کلاس کمکی بسازید که فقط و فقط توسط یک کلاس دیگه استفاده میشه؟

سی‌شارپ برای این سناریوها یه راه حل خیلی تمیز و قدرتمند داره: Nested Types (تایپ‌های تودرتو).

1️⃣ Nested Type چیست؟

یه Nested Type، یک تایپ (class, struct, enum, ...) است که داخل یک کلاس یا struct دیگه تعریف میشه. مثل یه جعبه‌ی کوچیک، داخل یه جعبه‌ی بزرگتر.
public class TopLevel
{
public class Nested { } // کلاس تودرتو
public enum Color { Red, Blue, Tan } // enum تودرتو
}

برای دسترسی به یک Nested Type از بیرون، باید اون رو با اسم کلاس بیرونی مشخص کنید:
TopLevel.Nested n = new TopLevel.Nested();
TopLevel.Color color = TopLevel.Color.Red;


2️⃣ ابرقدرت‌های Nested Types 🦸‍♂️

چرا باید از یه Nested Type استفاده کنیم؟ چون چند تا قدرت ویژه دارن که کلاس‌های معمولی ندارن:

دسترسی به اعضای private: 🔐

مهم‌ترین قدرتشون اینه که می‌تونن به اعضای private و protected کلاسی که داخلش هستن، دسترسی داشته باشن! این یعنی یه سطح کپسوله‌سازی فوق‌العاده.
public class TopLevel
{
private static int x = 10;
class Nested
{
// Nested به فیلد private کلاس TopLevel دسترسی داره!
static void Foo() => Console.WriteLine(TopLevel.x);
}
}


سطوح دسترسی بیشتر: 🛡

می‌تونن هر Access Modifierی داشته باشن (public, private, protected و...). این در حالیه که کلاس‌های معمولی فقط می‌تونن public یا internal باشن. پیش‌فرض دسترسی برای Nested Typeها، private هست.

3️⃣ قانون طلایی: کی از Nested Type استفاده کنیم؟ 🎯

این مهم‌ترین بخش ماجراست.

❌ دلیل اشتباه: استفاده از Nested Type برای جلوگیری از شلوغ شدن namespace. برای این کار از namespace تودرتو استفاده کنید.

✅ دلایل درست: فقط زمانی از Nested Type استفاده کنید که:

• کلاس داخلی شما به شدت به کلاس بیرونی وابسته است و به اعضای private اون نیاز مستقیم داره.

• می‌خواید با استفاده از Access Modifierها (مثل private یا protected)، اون کلاس رو از دنیای بیرون کاملاً مخفی کنید و به عنوان یه جزئیات پیاده‌سازی داخلی نگهش دارید.

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

Nested Types
یه ابزار قدرتمند برای کپسوله‌سازی پیشرفته هستن، به شرطی که به جا و درست ازشون استفاده بشه.

🔖 هشتگ‌ها:
#CSharp #DotNet #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 →