我有一个结构 TableRow 和一个这样的结构的数组 table:
table = new TableRow[10];
现在我想查找和操作数组中结构之一的内容。
我使用 Array.Find 搜索正确的数组元素:
var tr = Array.Find( table, tRow => tRow.color == 'red' );
tr.count++;
问题在于结构是值类型,因此 Find 方法返回我要操作的结构的副本。更改此副本不会更改数组中的结构。
我似乎找不到任何方法来指示 Find 方法通过引用返回结构。
最佳答案
您无法更改 Find()
对值类型的工作方式。您可以将 struct
转换为 class
—— 通常我们只将 struct
用于非常小的(<= 16 字节)值类型,这些值类型表示无论如何,一个“单一”的值(value)。 MSDN 在此处对 struct
与 class
提供了很好的指导:Chossing Between Classes and Structs
或者您可以使用 FindIndex()
获取数组中的位置,然后使用它来修改字段。
var pos = Array.FindIndex(table, tRow => tRow.color == 'red');
if (pos >= 0)
{
table[pos].count++
}
关于C#:查找和更改结构数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9234963/