⚖️ قوانین محلی در #C :
هر متدی در #C از یه سری دستور (Statement) تشکیل شده. اما این دستورها، به خصوص وقتی متغیر جدیدی تعریف میکنیم، قوانین خاصی دارن.
امروز میخوایم با قوانین متغیرهای محلی (Local Variables) و محدوده دیدشون یا همون Scope آشنا بشیم.
این دستورها یه متغیر جدید به برنامه معرفی میکنن. میتونید همزمان با تعریف، مقداردهی هم بکنید.
💯ترفند جالب: تعریف چند متغیر از یک نوع در یک خط:
کلمه کلیدی const:
اگه مقداری دارید که هرگز نباید تغییر کنه، اون رو با const (ثابت) تعریف کنید. constها باید حتماً موقع تعریف، مقداردهی بشن و بعد از اون غیرقابل تغییرن.
🚫قانون براکتها {} :
در #C، هر بلوک کدی که داخل آکولاد {} قرار میگیره، یه "محله" یا Scope جدید میسازه.
قانون اصلی Scope: متغیرهایی که تو این محله تعریف میشن، فقط همینجا "زندگی" میکنن و بیرون از این بلوک، دیگه شناخته شده نیستن. همچنین شما نمیتونید تو یه محله، دو تا متغیر با اسم یکسان تعریف کنید.
یه نکته عجیب در #C اینه که محدوده دید یه متغیر، کل بلوک کدش هست، حتی خطهای قبل از تعریفش!
برای همین اگه یه متغیر رو پایین یه بلاک تعریف کنید، نمیتونید بالاترش تو همون بلاک، یکی دیگه به همون اسم تعریف کنید.
درک درست Scope، کلید اصلی نوشتن کدهای تمیز و بدون خطای کامپایل هست.
شما تا حالا به خاطر این قوانین Scope به خطای "a variable with this name is already defined" برخورد کردید؟ یا نکتهی گستردگی Scope در #C براتون جدید بود؟
خب، اینجا که نمیشه همه حرفا رو زد! 😉
ادامهی بحث، سوالات، غر زدنها و گپ و گفتهای خودمونی، فقط تو گروه.
[پاتوق گیک های #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