这个问题在这里已有答案:
当它与List结合使用时,是否存在违反只读关键字的情况?
例如
class Program
{
public List<string> InputList;
public List<string> DefaultList;
public readonly List<string> ReadOnlyList;
public Program()
{
InputList = new List<string>() { "Initialized String" };
DefaultList = InputList;
ReadOnlyList = InputList;
}
static void Main(string[] args)
{
var p = new Program();
p.SampleMethod();
Console.ReadKey();
}
private void SampleMethod()
{
Console.WriteLine("inputList - " + InputList.LastOrDefault());
Console.WriteLine("readOnlyList - " + ReadOnlyList.LastOrDefault());
Console.WriteLine("defaultList - " + DefaultList.LastOrDefault());
InputList.Add("Modified String");
Console.WriteLine("inputList - " + InputList.LastOrDefault());
Console.WriteLine("readOnlyList - " + ReadOnlyList.LastOrDefault());
Console.WriteLine("defaultList - " + DefaultList.LastOrDefault());
}
}
和打印的输出
inputList - Initialized String
readOnlyList - Initialized String
defaultList - Initialized String
inputList - Modified String
readOnlyList - Modified String
defaultList - Modified String
readonly的概念是,它的值只能在构造函数内部进行更改,如果它没有被初始化的话。在上面的例子中,当两个集合在运行时被更改时,ReadOnlyList和DefaultList之间的确切区别是什么。
通过将ReadOnlyList更改为IReadOnlyCollection,我发现没有区别。有人可以帮助我理解这个概念。
在字段声明中,readonly
表示对字段的赋值只能作为声明的一部分或在同一个类的构造函数中出现。
你正在这样做,在构造函数内部分配。
列表本身是readonly
,而不是它的内容。