constتو این ویدیو یاد می‌گیرید که کلمه کلیدی readonly چطور کار می‌کنه، همین‌طور کلمه کلیدی و اینکه
چطور با هم مقایسه می‌شن.
هر دوی این‌ها به شما اجازه می‌دن متغیری بسازید که فقط‌خواندنی و غیرقابل‌تغییر باشه.
یعنی فیلدهایی که قابل تغییر نیستن، ولی در زمان مقداردهی اولیه و زمینهٔ .
استفاده با هم فرق دارن
بیایم هر دو رو بررسی کنیم تا کامل بفهمیم.
public const int NumberOfCornersفرض کن من یه دارم.
Rectangleمثلاً یه مستطیل من اینجام توی کلاس چهار گوشه داره.
و این مقدار ثابتِ.
مهم نیست چه مستطیلی بسازم، همیشه چهار گوشه داره.
از طرف دیگه می‌تونم یه داشته باشم public readonly string Color
و رنگ مستطیل توی این مثال باید یا هنگام تعریف مقداردهی بشه یا داخل سازنده.
(constructor)
پس اینجا اعلان فیلده.
همین موضوع برای اینجا هم صدق می‌کنه.
constحالا یه باید هنگام زمان کامپایل مقداردهی اولیه بشه.
یعنی باید هنگام کامپایل یک مقدار بهش داده بشه، که یعنی مستقیم در کد و همون خطی که ساخته می‌شه.
readonlyبرای نمی‌تونید از یه متد استفاده کنید که بهش مقدار بده.
اشکالی نداره اگر فقط در زمان اجرا مقداردهی بشه، یعنی وقتی که فقط هنگام اجرا مقدار می‌گیره.
runیعنی وقتی داریم اپ رو اجرا می‌کنیم یا روی دکمه کلیک می‌کنیم.
پس کی رنگ رو مقداردهی می‌کنم؟
خب، می‌تونم این کار رو داخل سازنده انجام بدم.
پس بیایم سریع یه سازنده درست کنیم.
پس برای مستطیل و می‌گیم هر بار که یه مستطیل جدید می‌سازیم، باید یه رنگ اختصاص بدیم.
و رنگی که به مستطیل من اختصاص داده می‌شه، رنگ همون مستطیل خاص خواهد بود.
با این حال، هر مستطیل چهار گوشه خواهد داشت.
پس این هم یکی از تفاوت‌های const و readonlyه.
constپس برای همهٔ نمونه‌های یه کلاس یکسان خواهد بود.
readonlyولی یه متغیر می‌تونه متفاوت باشه یا برای هر نمونه از.
اون کلاس متفاوت باشه
پس بیایم ببینیم این واقعاً چطور عمل خواهد کرد.
display detailsپس من این متد رو ایجاد کردم.
و کاری که انجام می‌ده اینه که جزئیات یه مستطیل رو نمایش می‌ده.
program.csحالا بیایم چند مستطیل توی فایل بسازیم.
پس اینجا یه مستطیل می‌سازم که اسمش رو می‌ذارم rectangle one.
و این یک مستطیل جدید خواهد بود.
و باید یه رنگ بهش اختصاص بدم.
پس می‌گم چیزی مثل قرمز.
و بعد یه مستطیل دیگه می‌سازم که آبی باشه، باشه؟
آبی خواهد بود.rectangle twoپس
حالا کاری که می‌خواهم انجام بدهم این است که از rectangle one.dot display details و rectangle two
display details استفاده کنم.
و حالا اگر این را اجرا کنیم، تفاوت بین آنها را خواهیم دید.
پس می‌بینیم که رنگشان متفاوت است اما تعداد گوشه‌ها همان است.
و این واقعاً یکی از نکات اصلی تفاوت بین کلیدواژه‌های استconst و read only
پس این یک مقدار ثابت است که برای هر مستطیلی که ایجاد می‌کنیم یکسان خواهد بود.
read only و این متفاوت خواهد بود یا می‌تواند برای هر مستطیل متفاوت باشد، زیرا
ما فقط آن را مقداردهی اولیه می‌کنیم.
یعنی مقداردهی به آن در لحظه‌ای که مستطیل را ایجاد می‌کنیم.
یعنی در داخل سازنده.
پس بیایید امتحان کنیم و رنگ را جای دیگری تغییر دهیم.
مثلاً اینجا سعی کنیم مقداری مثل خاکستری اختصاص دهیم.
می‌بینید که کار نمی‌کند.
read onlyپس پیامی که می‌دهد این است که یک فیلد نمی‌تواند مقداری بگیرد مگر در سازنده یا init only setter
برای نوعی که فیلد در آن تعریف شده است، یا مقداردهی اولیه متغیر.
پس چند کلیدواژه هست که هنوز بررسی نکردیم، اما می‌بینید که فقط می‌توان مقداری به آن اختصاص داد
یا آن را در سازنده یا مستقیماً اینجا مقداردهی کرد.
می‌توانستم بگویم که به طور پیش‌فرض همه رنگ‌ها آبی هستند، و سپس در هنگام.
ایجاد مستطیل واقعی مقدار متفاوتی دریافت کنند
پس نکته دیگری که باید بررسی شود این است که می‌بینید const و read only متغیرهای با حروف بزرگ استفاده می‌شوند.
number of corners و colorپس هر دو با حرف بزرگ شروع می‌شوند.
پس این چیزی است که هنگام نامگذاری باید به آن توجه کنید.
با این حال، یک مورد وجود دارد که این قرارداد نامگذاری را نادیده می‌گیرد.
read onlyو آن این است که، برای مثال، اگر یک فیلد داشته (private)باشید که یک فیلد خصوصی برای آن متغیر خاص باشد.
پس این.
IDاینجا می‌بینید این نیاز به زیرخط (_) دارد و با حرف کوچک نوشته می‌شود.
این به این دلیل است که این قرارداد نامگذاری در اینجا، قرارداد نامگذاری آنجا را نادیده می‌گیرد، اما فقط در
باشد.privateحالتی که فیلد
پس این هم از این ویدیو بود.
در ویدیوی بعدی می‌بینمتان.
خدانگهدار.