You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#:如何将类实例的值添加到列表并解除引用关联?

如何在C#中添加对象到列表时避免引用关联?

代码定义

首先定义如下类:

public class Liste
{
    public int valueInt { get; set; }
    public List<string> valueString = new List<string>();
}

同时定义以下列表变量:

public List<Liste> oray2 = new List<Liste>();
public Liste oray3 = new Liste();

问题复现

尝试手动为oray2列表添加元素:

oray3.valueInt = 10;
oray3.valueString.Add("Text1");
oray3.valueString.Add("Text2");
oray3.valueString.Add("Text3");

oray2.Add(oray3);

oray3.valueString.Remove("Text2");

执行后发现oray2列表中的元素也受到了影响——这是因为oray2.Add(oray3)并没有添加独立的对象副本,而是让oray2[0]和oray3指向了同一个对象,形成了引用关联。

可行解决方案

可以通过重新初始化oray3的方式切断关联,后续修改oray3就不会影响oray2中的元素:

方法一:

oray3 = null;

方法二:

oray3 = new Liste();

这两种方案都能生效,因为重新赋值后,oray3指向了新的对象(或空),而原来的对象仅被oray2持有,后续操作新的oray3不会再影响之前添加到列表里的对象。

内容的提问来源于stack exchange,提问作者Oray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 10:54:18