当与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的确切区别是什么。 / p>
通过将ReadOnlyList更改为IReadOnlyCollection也没有什么区别。有人可以帮助我理解这一概念。
答案 0 :(得分:0)
在字段声明中,readonly
表示对字段的赋值只能作为声明的一部分或在同一类的构造函数中进行。
您正在执行此操作,是在构造函数内部进行分配。
列表本身是readonly
,而不是其内容。