相关疑难解决方法(0)

无法修改返回值错误c#

我正在使用自动实现的属性.我想解决以下问题的最快方法是声明我自己的支持变量?

public Point Origin { get; set; }

Origin.X = 10; // fails with CS1612
Run Code Online (Sandbox Code Playgroud)

错误消息:无法修改'expression'的返回值,因为它不是变量

尝试修改作为中间表达式结果的值类型.由于该值未持久存在,因此该值将保持不变.

要解决此错误,请将表达式的结果存储在中间值中,或使用中间表达式的引用类型.

c# variables struct immutability

136
推荐指数
4
解决办法
8万
查看次数

更改结构列表中元素的值

我有一个结构列表,我想改变一个元素.例如 :

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]'的返回值,因为它不是变量

如果我使用类列表,则不会出现问题.

我想答案与结构是一种值类型有关.

那么,如果我有一个结构列表,我应该将它们视为只读吗?如果我需要更改列表中的元素,那么我应该使用类而不是结构?

c# struct value-type

61
推荐指数
5
解决办法
8万
查看次数

标签 统计

c# ×2

struct ×2

immutability ×1

value-type ×1

variables ×1