该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"; // 编译错误 _surname = "another surname"; // 编译错误 } }
注意:将字段声明为只读并不意味着不可变。如果该字段是引用类型,则可以更改对象的内容。只读通常用于防止对象仅在实例化期间被覆盖和分配。
注意:在构造函数中,可以重新分配一个只读字段
public class Car { public double Speed {get; set;} } //在代码中 private readonly Car car = new Car(); private void SomeMethod() { car.Speed= 100; }