我不得不认为我不明白它是如何工作的。
我的具体问题是:当我没有设置器和后备列表变量时,为什么允许我设置列表属性元素的值?
让我解释。假设我有一个 CustomerTable 类:
public List<string> Name
{
get
{
var names = new List<string>();
foreach (CustomerRow row in Rows)
{
name.Add(row.Name);
}
return names;
}
}
这个想法是让一个只读属性显示一列的内容,而不在我的类中复制数据,因为我已经有一个行列表。
无论如何,当 Visual Studio 接受如下代码片段而没有声称任何类型的错误时(它甚至允许我在没有错误的情况下编译),我会感到惊讶:
Name[0] = "John";
我不明白为什么这是合法的。我的属性没有设置 { },甚至没有要修改的后备列表。这段代码应该做什么?
它不应该像一种方法一样工作吗?除了我每次有人“得到”它时生成的列表之外,真的有一个存储列表吗?
(我可以根据需求提供更多细节,也将感谢任何其他评论)