【发布时间】:2018-08-14 20:00:56
【问题描述】:
代码:- (注意:- 这里我使用只读字表示该属性只有 get 访问器。)
Class Test
{
public List<string> list {get;}
public string name{get;}
public Test ()
{
list =new List<string>();
}
}
Main()
{
Test test =new Test();
test.list.add("c#"); //no error
test.name="Jhon"; //here I get compilation because property name is read-only
}
如果你看到上面的sn-p。测试类包含两个属性,名称和列表。在 main 方法中,我正在创建测试类的对象来访问这些属性。因此,如果您看到我是否尝试将值设置为 name 属性,那么我会收到编译错误,因为 name 属性是只读的。同样,如果您看到另一个属性“列表”,如果我使用 List 类的 add 属性,它也是只读的,那么我可以在列表中添加没有错误。 所以我不明白这是怎么发生的。
【问题讨论】:
-
@LennartStoop - 不,相同的答案/解释但非常不同的问题。
-
@HenkHolterman 不会说很不一样,示例代码清楚地表明一个项目正在被添加到列表中(而不是直接访问)
-
是的,但只读机制非常不同。这与列表无关。