我正在使用自动实现的属性.我想解决以下问题的最快方法是声明我自己的支持变量?
public Point Origin { get; set; }
Origin.X = 10; // fails with CS1612
Run Code Online (Sandbox Code Playgroud)
错误消息:无法修改'expression'的返回值,因为它不是变量
尝试修改作为中间表达式结果的值类型.由于该值未持久存在,因此该值将保持不变.
要解决此错误,请将表达式的结果存储在中间值中,或使用中间表达式的引用类型.
我有一个结构列表,我想改变一个元素.例如 :
MyList.Add(new MyStruct("john");
MyList.Add(new MyStruct("peter");
Run Code Online (Sandbox Code Playgroud)
现在我想改变一个元素:
MyList[1].Name = "bob"
Run Code Online (Sandbox Code Playgroud)
但是,每当我尝试这样做时,我都会收到以下错误:
无法修改System.Collections.Generic.List.this [int]'的返回值,因为它不是变量
如果我使用类列表,则不会出现问题.
我想答案与结构是一种值类型有关.
那么,如果我有一个结构列表,我应该将它们视为只读吗?如果我需要更改列表中的元素,那么我应该使用类而不是结构?