چه تکنولوژی می‌خواهید یاد بگیرید؟

نظرات و انتقادات خود را با ما در میان بگذارید

آپدیت روزانه

بیش از 1500 مطلب آموزشی

نیازهای روز

کلمات کلیدی Const ،Read Only و Static Read Only در زبان سی‌شارپ

سی‌شارپ شامل کلمات کلیدی مختلفی است که گاها درک تفاوت این کلمات گیج کننده است. Const و Read Only و Static Read Only کلمات کلیدی هستند که در این پست به آنها پرداخته می‌شود.

class Foo
{
    const string T1 = "";
    readonly string T2 = "";
    static readonly string T3 = "";
}

Const:

کلمه کلیدی const در زبان برنامه‌نویسی سی‌شارپ چیزی نیست جز یک متغیر، متغیر که در زمان کامپایل ثابت است. با امضا یک متغیر با کلمه کلیدی const، به صورت پیشفرض آن متغیر استاتیک و در سراسر پروژه در دسترس و فاقد تغییر مقدار آن خواهیم بود. اگر فقط متغیر تعریف و مقداری برای آن در نظر گرفته نشود با خطا کامپایلری زیر مواجه خواهید شد.

A const field requires a value to be provided.

به صورت پیشفرض یک ثابت، استاتیک است.

نام‌گذاری یک متغیر ثابت به چند روش صورت می‌پذیرد، ولی اگر ابزارهای کمکی ریشارپر یا دوفکتوری را نصب کرده باشید با تعریف و نام گذاری یک متغیر ثابت به شکل‌های مختلف، سرویس پیشنهاد دهنده نحوه نام ثابت را به صورت Pascal Casing پیشنهاد می‌دهد:

// Correct
public static const string ShippingType = "DropShip";

// Avoid
public static const string shipping_Type = "DropShip";
public static const string Shipping_Type = "DropShip";
public static const string SHIPPINGTYPE = "DropShip";
public static const string SHIPPING_TYPE = "DropShip";

ReadOnly:

کلمه کلیدی ReadOnly کلیدی است که ما می‌توانیم مقدار آن را در زمان اجرا تغییر دهیم اما نه در متدها و سازنده‌ استاتیک کلاس، همچنین می‌توان مقداری برای آن در نظر نگرفت و در زمان اجرا مقدار اولیه برای آن انتصاب نمود. در صورت متغیر readonly را در سازنده استاتیک یا متد مقداردهی کنیم با خطا زیر مواجه خواهیم شد:

An object reference is required for the non-static field, method, or property 'Program._test'

Static ReadOnly:

در مثال ReadOnly ما قادر بودیم برای متغیر مقداری در نظر گرفته و یا در زمان اجرا توسط سازنده‌ها مقدار آن را تغییر دهیم اما در Static ReadOnly فقط می‌توان یک بار مقدار آن را تغییر دهیم آن هم در متد سازنده استاتیک کلاس و بعد از آن در صورت تغییر با خطا کامپایلر زیر مواجه خواهیم شد: 

A static readonly field cannot be assigned to (except in a static constructor or a variable initializer)

امید نصری

0 نظر:

تعداد دیدگاه‌های کاربران : 0 دیدگاه
مهمان گرامی! برای ارسال نظر نیاز است وارد سایت شوید.


You must ورود to comment.