如何在列表中改变结构体的元素

本文关键字:结构体 元素 改变 列表 | 更新日期: 2023-09-27 17:53:11

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

帮助为什么会出现这种情况,有没有其他方法来修改

如何在列表中改变结构体的元素

struct值类型。因此,与class之类的引用类型相比,您不传递对实例的引用,而是传递本身。

所以从索引器dataRectangle[0]返回的不是对您的struct的引用,而是该struct副本。它只是在堆栈上传递,但它本身不是变量。

要解决这个问题,您可以将rectangle声明为class(我更喜欢可变类型):

public struct rectangle
{
   public decimal A {get; set;}
}

,否则你(尽管看起来很丑)必须做一个像

这样的重赋
dataRectangle[0] = new rectangle{a=0};