TGViewer
Software Philosophy Software Philosophy @softwarephilosophy · 3.48K subscribers
Post #2311 1.6K
آشنایی باScope of Variables در سی‌شارپ

#csharp_for_beginners

در سی‌شارپ Scope به معنای محدوده‌ای است که یک متغیر در برنامه قابل دسترسی بوده و قابل استفاده است. در زبان سی‌شارپ، محدوده‌ی تغییرپذیری متغیرها معمولاً به سه سطح اصلی تقسیم می‌شود: در سطح کلاس (Class-Level Scope)، در سطح متد (Method-Level Scope)، و در سطح بلوک (Block-Level Scope)

۱. سطح کلاس Class-Level Scope

متغیرهایی که در داخل کلاس اما بیرون از تمامی متدها تعریف می‌شوند، دارای محدوده‌ی سطح کلاس هستند و به‌عنوان field یا اعضای کلاس شناخته می‌شوند. این متغیرها در تمامی متدها و بلوک‌های همان کلاس قابل دسترسی‌اند—مگر دسترسی‌ آن‌ها توسط Access Modifier محدود شده باشد، اما داخل همان کلاس تأثیری بر دسترسی ندارد.
مثال:

class Geeks {
int a = 10; // کلاس-سطح
public void Display() {
Console.WriteLine(a); // قابل دسترسی
}
}


۲. سطح متد Method-Level Scope

متغیرهایی که در داخل یک متد تعریف می‌شوند، محدوده‌ی سطح متد دارند و به‌عنوان local variables شناخته می‌شوند. این متغیرها فقط در همان متد قابل دسترسی‌اند. همچنین امکان تعریف دو متغیر با نام یکسان در یک محدوده وجود ندارد و دسترسی به آن‌ها پس از خاتمه‌ی اجرای متد ممکن نیست.

۳. سطح بلوک Block-Level Scope

متغیرهایی که در داخل یک بلوک مانند if، for، { ... } یا دیگر ساختارهای کنترلی تعریف شوند، محدوده‌ی بلوکی دارند. یعنی تنها در همان بلوک (یا بلوک‌های تو در تو) قابل استفاده‌اند و خارج از آن بلوک قابل دسترسی نیستند.

مثال:
for (int i = 0; i < 5; i++) {
Console.WriteLine(i);
}
// Console.WriteLine(i); // خطا—خارج از بلوک for


نکته‌: Shadowing در سی‌شارپ

در بسیاری از زبان‌ها، متغیرهایی که در داخل بلوک داخلی تعریف می‌شوند می‌توانند متغیرهای بیرونی با همان نام را مخفی یا Shadow کنند. اما در سی‌شارپ، shadowing نام متغیرها بین بلوک شرطی (if) و متد مجاز نیست—اگرچه بین کلاس و متد یا بین کلاس‌ها ممکن است.

قواعد Scope در سی‌شارپ:

۱ .ساختاریافته‌تر و خواناتر باشند.
۲. از خطاهایی مانند استفاده از متغیر خارج از محدوده جلوگیری شود.
۳. حافظه بهینه‌تر مدیریت گردد، چرا که متغیرهای محلی پس از انجام وظیفه آزاد می‌شوند.

🔗 مطلب کامل را در این لینک می‌توانید مطالعه کنید.

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنت‌ها به اشتراک بگذارید.

کانال تلگرام:
@SoftwarePhilosophy

______
GeeksforGeeks C# Scope of Variables - GeeksforGeeks Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and more.
  • 👍 7
More from @softwarephilosophy
  1. Sep 27, 2026نگو JEV بگو System One! دنیل کانمن (Daniel Kahneman) توی کتاب معروفش «تفکر، سریع و کند» (T…
  2. Sep 23, 2026بازنویسی کل GitHub Copilot Runtime با Rust 🔶 حدود ۱۲۰،۰۰۰ دلار هزینه توکن و سه هفته وقت ی…
  3. Sep 15, 2026ورک‌شاپ «AI Agents in C# (MAF)» در این ورک‌شاپ به بررسی امکانات جدید برنامه‌نویسی با کتابخ…
  4. Sep 12, 2026کد مدریت شده (Managed Code) در دات‌نت یعنی چی؟ ▫️به زبان ساده: کد مدریت شده (Managed Code)…
  5. Sep 5, 2026آشنایی با Attributeها در سی‌شارپ در سی شارپ، Attributeها برای اضافه کردن metadata یا اطلاع…
  6. Aug 25, 2026اگر در دات نت Agent، MCP Server یا ابزارهای مبتنی بر هوش مصنوعی توسعه میدهی، این پروژه میت…
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 →