TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 548 subscribers
Post #76 94
⚖️ قوانین محلی در #C :
همه چیز درباره متغیرها، Scope و const

هر متدی در #C از یه سری دستور (Statement) تشکیل شده. اما این دستورها، به خصوص وقتی متغیر جدیدی تعریف می‌کنیم، قوانین خاصی دارن.

امروز می‌خوایم با قوانین متغیرهای محلی (Local Variables) و محدوده دیدشون یا همون Scope آشنا بشیم.

1️⃣ دستورهای تعریف (Declaration Statements)

این دستورها یه متغیر جدید به برنامه معرفی می‌کنن. می‌تونید همزمان با تعریف، مقداردهی هم بکنید.

💯ترفند جالب: تعریف چند متغیر از یک نوع در یک خط:
bool rich = true, famous = false;
int x = 1, y = 2, z = 3;


کلمه کلیدی const:
اگه مقداری دارید که هرگز نباید تغییر کنه، اون رو با const (ثابت) تعریف کنید. constها باید حتماً موقع تعریف، مقداردهی بشن و بعد از اون غیرقابل تغییرن.
const double Pi = 3.14159;
// Pi = 3.15; // ❌ خطای زمان کامپایل!


2️⃣ محدوده دید یا Scope

🚫قانون براکت‌ها {} :
در #C، هر بلوک کدی که داخل آکولاد {} قرار می‌گیره، یه "محله" یا Scope جدید می‌سازه.

قانون اصلی Scope: متغیرهایی که تو این محله تعریف میشن، فقط همینجا "زندگی" می‌کنن و بیرون از این بلوک، دیگه شناخته شده نیستن. همچنین شما نمی‌تونید تو یه محله، دو تا متغیر با اسم یکسان تعریف کنید.
void SomeMethod()
{
int x = 10; // x در کل متد SomeMethod قابل دسترسه

{ // شروع یک اسکوپ داخلی جدید
int y = 20; // y فقط داخل این براکت‌ها وجود داره
// int x = 5; // ❌ خطا: x قبلاً در این محدوده (اسکوپ بالاتر) تعریف شده
Console.WriteLine(x); // ✅ درسته، چون x از بیرون دیده میشه
}

// Console.WriteLine(y); // ❌ خطا: y اینجا دیگه وجود نداره و از بین رفته
}


3️⃣ نکته عجیب و مهم #C:گستردگی Scope

یه نکته عجیب در #C اینه که محدوده دید یه متغیر، کل بلوک کدش هست، حتی خط‌های قبل از تعریفش!

برای همین اگه یه متغیر رو پایین یه بلاک تعریف کنید، نمی‌تونید بالاترش تو همون بلاک، یکی دیگه به همون اسم تعریف کنید.
void AnotherMethod()
{
int i = 5;
if (i == 5)
{
// با اینکه i اینجا تعریف شده، اسکوپش کل بلاک if هست
// برای همین خط پایین خطا میده
// int i = 10; // ❌ خطا: i قبلاً در این اسکوپ تعریف شده

int j = 20;
}
// Console.WriteLine(j); // ❌ خطا: j فقط داخل if زنده بود
}


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

درک درست Scope، کلید اصلی نوشتن کدهای تمیز و بدون خطای کامپایل هست.

شما تا حالا به خاطر این قوانین Scope به خطای "a variable with this name is already defined" برخورد کردید؟ یا نکته‌ی گستردگی Scope در #C براتون جدید بود؟

خب، اینجا که نمیشه همه حرفا رو زد! 😉
ادامه‌ی بحث، سوالات، غر زدن‌ها و گپ و گفت‌های خودمونی، فقط تو گروه.
[پاتوق گیک های #C]

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