在C#中,readonly
关键字用于声明一个只读字段,这意味着一旦为字段分配了初始值,就不能再修改它的值。然而,如果你尝试在声明后修改readonly
字段的值,编译器会报错。
例如:
public class MyClass
{
public readonly int MyReadonlyField = 10;
}
在这个例子中,MyReadonlyField
是一个只读字段,不能直接修改它的值。尝试这样做会导致编译错误:
MyClass obj = new MyClass();
obj.MyReadonlyField = 20; // 编译错误:不能修改只读字段
但是,如果你在一个构造函数中为readonly
字段分配值,那么在类的其他方法中可以访问和修改它。这是因为构造函数在创建对象时执行,此时可以为readonly
字段分配初始值。一旦对象创建完成,就不能再修改readonly
字段的值。
例如:
public class MyClass
{
public readonly int MyReadonlyField;
public MyClass(int value)
{
MyReadonlyField = value;
}
}
在这个例子中,MyReadonlyField
仍然是一个只读字段,但在构造函数中可以为它分配值。在类的其他方法中可以访问和修改它:
MyClass obj = new MyClass(10);
obj.MyReadonlyField = 20; // 这是允许的,因为我们在构造函数中为其分配了值