کلمه کلیدی const ، در واقع اصلاحگری برای اعلان فیلد، یا متغیر محلی است و تعیین می کند که مقدار فیلد یا متغیر محلی ثابت است، به این معنی که مقادیر آنها قابل دستکاری نیست.
const int x = 0; public const double gravitationalConstant = 6.673e-11; private const string productName = "Visual C#";
ملاحظات
نوع یک اعلان ثابت، نوع اعضای معرفی شده توسط اعلان را تعیین می کند. یک عبارت ثابت باید مقداری از نوع هدف یا از نوعی که توانایی تبدیل ضمنی به نوع هدف داشته باشد را حاصل کند.
یک عبارت ثابت، عبارتی است که می تواند در زمان کامپایل بطور کامل ارزیابی شود (نیاز به پردازش های زمان اجرا نداشته باشد). بنابراین ، تنها مقادیر مجاز برای ثابت های نوع مرجع، string و null می باشد.
اعلان ثابت می تواند چندین ثابت را به شکل زیر اعلان کند:
public const double x = 1.0, y = 2.0, z = 3.0;
اصلاحگر static در اعلان ثابت مجاز نیست.
یک ثابت می تواند در عبارت ثابت دخالت داده شود؛ بصورت زیر:
public const int c1 = 5; public const int c2 = c1 + 100;
نکته
کلمه کلیدی readonly با کلیدواژه const متفاوت است. یک فیلد const فقط می تواند در هنگام اعلان فیلد، مقداردهی اولیه شود. یک فیلد readonly هم در زمان اعلان و هم در داخل متد سازنده (Constructor) قابلیت مقداردهی اولیه دارد. بنابراین، فیلدهای readonly بسته به متد سازنده استفاده شده، مقادیر متفاوتی می توانند داشته باشند. همچنین، اگرچه یک فیلد const یک ثابت زمان-کامپایل است، فیلد readonly می تواند به عنوان ثابت های زمان-اجرا مورد استفاده قرار گیرد. برای مثال در تکه کد زیر:
public static readonly uint l1 = (uint)DateTime.Now.Ticks;
مثال
public class ConstTest { class SampleClass { public int x; public int y; public const int c1 = 5; public const int c2 = c1 + 5; public SampleClass(int p1, int p2) { x = p1; y = p2; } } static void Main() { SampleClass mC = new SampleClass(11, 22); Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y); Console.WriteLine("c1 = {0}, c2 = {1}", SampleClass.c1, SampleClass.c2 ); } } /* Output x = 11, y = 22 c1 = 5, c2 = 10 */
این مثال چگونگی استفاده از ثابت ها به عنوان متغیرهای محلی را نشان می دهد.
public class SealedTest { static void Main() { const int c = 707; Console.WriteLine("My local constant = {0}", c); } } // Output: My local constant = 707
ممنون از وبلاگ خوبتون
بنظر من اگه به زبان ساده و محاوره ای آموزش بدین شیرینتر هست و یادگیری بیشتر میشه. :-)