在C#中,readonly
字段是在聲明時或在構造函數中初始化的,且其值在對象創建后不能被修改。以下是readonly
字段的初始化方式:
readonly
字段賦初值。這種方式要求初始化值必須在聲明時可知。public class MyClass
{
public readonly int MyField = 10;
}
readonly
字段賦初值。這種方式允許在對象創建后的任何時間點為字段賦值,只要該賦值操作不違反readonly
字段的約束。public class MyClass
{
public readonly int MyField;
public MyClass(int value)
{
MyField = value;
}
}
readonly
字段賦初值。這種方式與在聲明時初始化類似,但提供了更多的靈活性,因為可以在屬性訪問器中執行復雜的邏輯。public class MyClass
{
public readonly int MyField;
public MyClass()
{
MyField = InitializeMyField();
}
private int InitializeMyField()
{
// 執行復雜的邏輯來初始化MyField
return 10;
}
}
需要注意的是,盡管屬性初始化器可以為readonly
字段賦初值,但這并不意味著屬性本身是只讀的。屬性仍然允許讀取和寫入其關聯的字段,只是在讀取或寫入時會執行初始化器中定義的邏輯。因此,在使用屬性初始化器時要小心,確保不會破壞readonly
字段的約束。