تفاوت const و readonly در c# چیست
متغیر read-only و constant چیست ؟ چه فرقی دارند ؟ چه زمانی باید از const به جای read-only استفاده کرد ؟ const و readonly خیلی عبارات متداولی هستند و وقتی اونها رو با یکدیگر استفاده می کنید خیلی گیج کننده هستند.
قبل از هر چیز ، اول ببینیم متغیر ثابت چیست ؟ متغیری که مقدارش در زمان اجرای برنامه نمی تونه تغییر کنه . متغیر های ثابت رو با استفاده از عبارت const و readonly تعیین می کنیم . مانند شکل زیر
همانطور که گفتم ، در کد بالا هر دو عبارت دقیقا یک کار رو انجام می دن ، اگر یک متغیر رو با عبارت const یا readonly تعریف کنیم بعدا نمی تونیم تغییرش بدیم، در مواردی که شما بخواید مقادیر دیگری به این متغیرها بدید خطا دریافت خواهید کرد .
بنابراین ، تفاوت در چیست ؟ تفاوت در زمان مقداردهی این دو نوع متغیر ثابت هستش ، میشه گفت ، const یه متغیر ثابت زمان کامپایل هستش ، در حالی که ، readonly یه متغیر ثابت زمان اجرا ست .
به بیان ساده تر ، مقداردهی const در زمان تعریفش باید انجام بشه ، جای دیگه نمیشه مقداردهیش کرد .
وقتی مقداردهی شد ، ثابت هسستش و در زمان اجرا نمیشه تغییرش داد .
ضمنا const متغیر ضمنی استاتیک هستش ، بنابراین با ClassName.Variable و در این مثال ، Program.MaxLength می تونید به این متغیر دسترسی داشته باشید .
از سوی دیگر ، تعریف و مقداردهی اولیه برای read-only می تونه در جاهای متفاوتی باشه . اون می تونه در هنگام تعریف یا در سازنده اون کلاس مقداردهی بشه .
در مورد read-only اگر شما بخواهید یه مقدار بهش بدید از ورودی کاربر یا از تنظیمات ، می تونید در سازنده کلاس و در مقدار دهی اولیهاین کار رو انجام بدید .
وقتی مقادیر مطلقا ثابت هستند و تغییری نمی کنند مانند maxLength از const استفاده کنید ، و وقتی مقدار متغیرها از ورودی کاربر میاد یا فایل تنظیمات یا از متغیر دیگر از read-only استفاده کنید.
به طور مختصر ، const یک ثابت زمان کامپایل هستش و در زمان تعریفش باید مقداردهی بشه و read-only یک ثابت زمان اجراست برای اونایی که مقداردهی اولیه ش می تونه در هنگام تعریفش یا در سازنده کلاسش باشه .
شما همچنین می توانید برای مشاوره رایگان در زمینه طراحی سایت کاشان با گروه نرم افزاری آبی در تماس باشید.