class Program
{
private readonly static int[] dict = new int[9]{1,2,3,4,5,6,7,8,9};
static void Main(string[] args)
{
var arr1 = dict;
arr1[2] = 10;
var arr2 = dict;
}
}
执行上面的代码,arr1 [2],arr2 [2]和dict [2]全部= 10,dict [2]和arr2 [2]是否仍为3?
只读]并不意味着您不能修改实例,而仅是您不能重新分配实例。因此,您可以这样做:
arr[0] = ...
但不是这个:
arr = new int[1];
数组只是对象。您当然可以对对象执行任何操作,即使它是readonly
:
readonly MyClass m;
static void Main()
{
m.MyProperty = 33;
}
readonly
表示“此字段只能在构造函数中分配”。final
修饰符。const
关键字)。IReadOnly...
接口公开对象(尽管这仍然不能保证值是不可变的。