只讀
readonly
關鍵字是欄位修飾符。當欄位宣告包含 readonly
修飾符時,對該欄位的賦值只能作為宣告的一部分或在同一個類的建構函式中出現。
readonly
關鍵字與 const
關鍵字不同。const
欄位只能在欄位宣告時初始化。可以在宣告或建構函式中初始化 readonly
欄位。因此,readonly
欄位可以具有不同的值,具體取決於所使用的建構函式。
注入依賴項時經常使用 readonly
關鍵字。
class Person
{
readonly string _name;
readonly string _surname = "Surname";
Person(string name)
{
_name = name;
}
void ChangeName()
{
_name = "another name"; // Compile error
_surname = "another surname"; // Compile error
}
}
注意: 只讀宣告欄位並不意味著不可變性。如果該欄位是*引用型別,*則可以更改物件的內容。 Readonly 通常用於防止僅在例項化該物件期間覆蓋和分配物件。 ****
注意:在建構函式內部,可以重新分配只讀欄位
public class Car
{
public double Speed {get; set;}
}
//In code
private readonly Car car = new Car();
private void SomeMethod()
{
car.Speed = 100;
}