#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
______