public struct rectangle
{
public decimal a;
}
这是我的结构 我有一个结构矩形列表
list<rectangle> dataRectangle= new list<rectangle>();
现在我已经在列表中添加了一些结构 现在我想更改列表中存在的结构的值,如
dataRectangle[0].a=0;
它说
cannot modify the return value ' list<form4.rectangle>.this[int] ' because it is not a variable
帮助为什么会这样,有另一种方法可以修改
答案 0 :(得分:2)
struct
是值类型。因此,与引用类型(如class
类型相比,您不会传递对实例的引用,而是传递值本身。
因此,索引器dataRectangle[0]
返回的内容不是struct
的引用,而是struct
的副本。它只是简单地传递给堆栈,但本身并不是变量。
要解决此问题,您可以将rectangle
声明为class
(我更喜欢 mutable 类型:
public struct rectangle
{
public decimal A {get; set;}
}
或者你会(看起来很难看)必须像
一样进行重新分配dataRectangle[0] = new rectangle{a=0};