首页 > 后端开发 > C++ > 如何在 C# 中修改结构列表中的元素?

如何在 C# 中修改结构列表中的元素?

Susan Sarandon
发布: 2025-01-05 00:20:39
原创
786 人浏览过

How Can I Modify Elements Within a List of Structs in C#?

修改结构列表中的元素

使用结构列表时,尝试使用简单的赋值结果更改单个元素在错误消息“无法修改 System.Collections.Generic.List.this[int] 的返回值,因为它不是变量。”这是由于结构体的值类型语义造成的。

理解值类型语义

在 C# 中,结构体变量保存数据的副本,意味着对副本进行的任何修改不影响原来的。此行为与类不同,类中对象引用指向实际数据。

访问和修改结构元素

在提供的示例中,当分配 MyList[1] 时。命名为“bob”,创建 MyStruct 的新实例并将其分配给该变量。但是,这个新实例并不引用列表中的原始元素。因此,原始元素保持不变。

修改列表中结构体元素的选项

要修改结构体列表中的实际元素,请考虑以下方法:

  1. 使用接口:通过使用 setter 方法实现接口,人们可以通过接口引用修改结构的内部成员。然而,这种方法引入了装箱,这会导致性能损失。
  2. 创建一个等效类:如果修改列表中的元素至关重要,那么最好使用类而不是结构体。类作为引用类型,允许直接修改原始实例。

在结构体和类之间进行选择

决定使用结构体还是类不应主要基于将它们存储在集合中的需要。相反,请考虑所表示的数据的语义和要求。对于表示单个不可变值的值对象,结构通常是首选。另一方面,类擅长表示具有可变状态和潜在复杂关系的对象。

以上是如何在 C# 中修改结构列表中的元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板