【发布时间】:2013-02-18 20:55:10
【问题描述】:
想象一下struct:
struct Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
以下代码:
var list = new List<Person>();
list.Add(new Person { FirstName = "F1", LastName = "L1" });
list.Add(new Person { FirstName = "F2", LastName = "L2" });
list.Add(new Person { FirstName = "F3", LastName = "L3" });
// Can't modify the expression because it's not a variable
list[1].FirstName = "F22";
当我想更改 Property 的值时,会出现以下错误:
Can't modify the expression because it's not a variable
虽然,当我尝试在 Person[] 等数组中更改它时,它没有任何错误。使用泛型集合时我的代码有什么问题吗?
【问题讨论】:
-
为什么你的人不上课?
-
拥有一个可变结构不是一个好主意——你不能使用一个类吗?
-
试试看 - 这是 MSDN 上的解释:msdn.microsoft.com/query/… - 这是因为值类型是在赋值时复制的......当您从属性或索引器中检索值类型时,您会得到对象的副本,而不是对对象本身的引用。
-
对于完全相同的问题已经有了很好的答案stackoverflow.com/questions/414981/…
-
@Ginosaji 你怎么知道的,如果
General rule of thumb is to never use struct?
标签: c# .net struct generic-list generic-collections