در زبان برنامهنویسی C#، خاصیت init-only property به عنوان یکی ویژگی در سی شارپ 9 معرفی شده است که به برنامهنویسان این امکان را میدهد تا خواصی را تعریف کنند که فقط در زمان ایجاد شیء قابل تنظیم باشند و پس از آن دیگر نباید تغییر کنند.
این ویژگی مهمترین کاربردش در جلوگیری از تغییر خواصی است که نباید در طول عمر یک شیء تغییر کنند، به خصوص در صورتی که آن شیء به عنوان پارامتری به یک تابع داده شده باشد و تابع دیگری به آن دسترسی داشته باشد. با استفاده از init-only property، برنامهنویسان میتوانند خاصیتهای مورد نظر را در زمان ایجاد شیء تعیین کنند و پس از آن دیگر نباید نگران تغییرات آنها باشند.
برای تعریف یک خاصیت init-only در C#، باید از کلمه کلیدی init قبل از set accessor استفاده کرد. به عنوان مثال، اگر بخواهیم یک کلاس Person با دو خاصیت FirstName و LastName تعریف کنیم، میتوانیم به این صورت عمل کنیم:
public class Person
{
public string FirstName { get; init; }
public string LastName { get; init; }
}
حال میتوانیم یک شیء از کلاس Person ایجاد کنیم و خواص آن را در همان زمان تعیین کنیم:
var person = new Person
{
FirstName = "Omid",
LastName = "Soleiman"
};
پس از ایجاد شیء، میتوانید خواص آن را بخوانید، اما نمیتوانید آنها را تغییر دهید. این ویژگی باعث میشود که امکان بروز خطاهای ناشی از تغییر خواص غیرقابل تغییر برای یک شیء از بین برود و کد بهبود یابد.