فیلدهای خواندنی (readonly) در سیشارپ
فیلدهای خواندنی (readonly) در سیشارپ برای مقادیری است که فقط در زمان تعریف یا سازنده مقداردهی شده و پس از آن تغییرناپذیرند.
فیلدهای خواندنی (readonly) در سیشارپ
فیلدهای خواندنی (readonly) در زبان برنامهنویسی سیشارپ نوعی فیلد هستند که مقدار آنها تنها در زمان تعریف یا در سازنده کلاس مقداردهی میشود و پس از مقداردهی قابل تغییر نیستند.
این نوع فیلدها به برنامهنویسان کمک میکنند تا مقادیر ثابت و غیرقابلتغییر را در یک شیء تعریف کنند که باید در طول عمر آن شیء ثابت بمانند.
کلمه کلیدی readonly برای تعریف فیلدهایی استفاده میشود که فقط یک بار مقداردهی شوند و پس از آن امکان تغییر مقدارشان وجود نداشته باشد. این مقداردهی میتواند:
-
در زمان تعریف فیلد (در خط تعریف) انجام شود.
-
یا در داخل سازنده کلاس (Constructor) اعمال شود.
ساختار کلی فیلد readonly
readonly DataType FieldName;
مثال ساده
public class Example
{
public readonly int ReadOnlyField = 10; // مقداردهی در زمان تعریف
public Example()
{
ReadOnlyField = 20; // مقداردهی در سازنده
}
}
در این مثال، فیلد ReadOnlyField یک فیلد readonly است که مقدار آن یا در خط تعریف یا در سازنده کلاس تنظیم میشود.
پس از مقداردهی در سازنده، مقدار آن دیگر قابل تغییر نیست.
🌟 آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
شرکت در دوره آموزش برنامه نویسی سی شارپ
ویژگیها و محدودیتهای فیلدهای readonly
-
مقداردهی محدود به زمان تعریف یا سازنده
-
مقداردهی تنها در زمان تعریف یا داخل سازنده کلاس انجام میشود.
-
تغییر مقدار فیلد readonly در متدها یا سایر بخشهای کلاس امکانپذیر نیست.
-
-
خواندن مقدار در هر جای کد
- مقدار فیلد readonly در هر جای کد قابل خواندن است، اما تغییر آن محدود به زمان تعریف یا سازنده است.
-
عدم تغییر پس از مقداردهی
- اگر یک بار مقداردهی انجام شود، مقدار آن فیلد تا پایان عمر شیء ثابت میماند.
-
تفاوت با const
-
مقدار فیلدهای readonly میتواند در زمان اجرا تعیین شود (از طریق سازنده)، در حالی که مقدار const فقط در زمان کامپایل مشخص میشود.
-
فیلدهای readonly میتوانند مقادیر غیرثابت (مانند نتایج محاسبات یا ورودیها) را در زمان اجرای برنامه دریافت کنند.
-
کاربردهای فیلدهای readonly
-
تعریف مقادیر ثابت مرتبط با یک شیء
زمانی که نیاز است مقادیری ثابت و تغییرناپذیر به یک شیء مرتبط باشند و این مقادیر تنها در زمان ایجاد شیء مشخص شوند. -
تنظیم مقادیر بر اساس ورودیهای پویا
فیلدهای readonly به شما اجازه میدهند مقادیر ثابت را بر اساس ورودیهای کاربر یا نتایج محاسبات در زمان اجرا تنظیم کنید. -
ایجاد شیءهای امن و پایدار
استفاده از فیلدهای readonly میتواند به شما کمک کند شیءهایی ایجاد کنید که ویژگیهای ثابت و تغییرناپذیری داشته باشند، که باعث کاهش خطاها و افزایش پایداری کد میشود.
مثالهای عملی از فیلدهای readonly
مثال 1: مقداردهی در زمان تعریف
public class ReadOnlyExample
{
public readonly string Greeting = "Hello, World!";
public void DisplayGreeting()
{
Console.WriteLine(Greeting);
}
}
در این مثال، مقدار Greeting در زمان تعریف مشخص شده و قابل تغییر نیست.
مثال 2: مقداردهی در سازنده
public class ReadOnlyExample
{
public readonly int Id;
public ReadOnlyExample(int id)
{
Id = id; // مقداردهی در سازنده
}
public void DisplayId()
{
Console.WriteLine($"ID: {Id}");
}
}
در اینجا، مقدار Id در زمان ایجاد شیء و بر اساس مقدار ورودی مشخص میشود.
مثال 3: ترکیب با فیلدهای استاتیک
public class StaticReadOnlyExample
{
public static readonly string StaticGreeting;
static StaticReadOnlyExample()
{
StaticGreeting = "Hello from Static Field!";
}
public static void DisplayStaticGreeting()
{
Console.WriteLine(StaticGreeting);
}
}
فیلدهای استاتیک readonly تنها یک بار مقداردهی میشوند و مقدار آنها برای تمامی نمونههای کلاس یکسان باقی میماند.
مثال 4: استفاده برای ورودیهای پویا
public class Config
{
public readonly string DatabaseConnectionString;
public Config(string connectionString)
{
DatabaseConnectionString = connectionString;
}
public void ShowConfig()
{
Console.WriteLine($"Connection String: {DatabaseConnectionString}");
}
}
در این مثال، مقدار رشته اتصال پایگاه داده تنها در زمان ایجاد شیء و بر اساس مقدار ورودی تعیین میشود.
عملکرد و بهینهسازی فیلدهای خواندنی
-
بهبود امنیت کد
استفاده از فیلدهای readonly میتواند مانع از تغییرات ناخواسته در مقادیر مهم شود و امنیت کد را افزایش دهد. -
سرعت اجرا
از آنجا که مقدار فیلدهای readonly پس از مقداردهی تغییر نمیکند، در زمان اجرا پردازش اضافی برای بررسی یا تغییر مقدار آنها انجام نمیشود. -
سازگاری با اصول شیءگرایی
فیلدهای readonly به شما امکان میدهند رفتار اشیاء را پایدار و غیرقابل پیشبینی نگه دارید، که این امر با اصول شیءگرایی مانند کپسولهسازی و کاهش وابستگی سازگار است.
مثال پروژهمحور از فیلدهای خواندنی (readonly) در سیشارپ
مثال پروژهمحور: استفاده از فیلدهای readonly در مدیریت پیکربندی یک سیستم
فرض کنید در حال پیادهسازی سیستمی هستید که تنظیمات (Configuration) یک برنامه را مدیریت میکند.
این تنظیمات شامل اطلاعات پایگاه داده، مسیر فایلهای لاگ، و برخی تنظیمات ثابت است.
فیلدهای readonly در اینجا کمک میکنند تا این مقادیر پس از مقداردهی ثابت بمانند و از تغییرات ناخواسته جلوگیری شود.
کد پروژه
using System;
namespace ConfigurationManagerExample
{
public class AppConfig
{
// فیلدهای readonly برای مقادیر ثابت پیکربندی
public readonly string DatabaseConnectionString;
public readonly string LogFilePath;
public readonly int MaxRetryAttempts;
// سازنده کلاس برای مقداردهی به فیلدها
public AppConfig(string connectionString, string logFilePath, int maxRetries)
{
DatabaseConnectionString = connectionString;
LogFilePath = logFilePath;
MaxRetryAttempts = maxRetries;
}
// متدی برای نمایش تنظیمات
public void DisplayConfig()
{
Console.WriteLine("Application Configuration:");
Console.WriteLine($"Database Connection String: {DatabaseConnectionString}");
Console.WriteLine($"Log File Path: {LogFilePath}");
Console.WriteLine($"Max Retry Attempts: {MaxRetryAttempts}");
}
}
class Program
{
static void Main(string[] args)
{
// مقادیر ورودی تنظیمات
string dbConnectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
string logFilePath = "C:\\Logs\\app-log.txt";
int maxRetries = 5;
// ایجاد نمونهای از AppConfig با مقادیر ورودی
AppConfig config = new AppConfig(dbConnectionString, logFilePath, maxRetries);
// نمایش تنظیمات برنامه
config.DisplayConfig();
// تلاش برای تغییر مقدار فیلد readonly (منجر به خطا میشود)
// config.DatabaseConnectionString = "NewConnectionString"; // این خطا خواهد داد
}
}
}
شرح کد
-
تعریف فیلدهای readonly
سه فیلد readonly (DatabaseConnectionString، LogFilePath و MaxRetryAttempts) تعریف شدهاند که مقدار آنها فقط در زمان ایجاد نمونه (Instance) مقداردهی میشود. -
سازنده کلاس
مقادیر این فیلدها از طریق سازنده کلاس AppConfig تعیین میشوند. این روش به شما اجازه میدهد مقادیر پیکربندی را در زمان اجرا بر اساس نیاز برنامه تنظیم کنید. -
نمایش تنظیمات
متد DisplayConfig مقادیر ثابت پیکربندی را در کنسول نمایش میدهد. -
عدم تغییر مقدار
تلاش برای تغییر مقدار فیلدهای readonly پس از مقداردهی در سازنده منجر به خطای کامپایل میشود، که این امر به حفظ ثبات مقادیر کمک میکند.




کاربران ما
شما هم نظرتون با ما دریاره “فیلدهای خواندنی (readonly) در سیشارپ” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید