如何在列表c#中更改struct的元素?

时间:2016-06-29 11:10:58

标签: c# struct

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

帮助为什么会这样,有另一种方法可以修改

1 个答案:

答案 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};