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

C# List集合属性get/set异常:赋值时无法向List添加元素

问题分析与解决:set方法中向List添加元素无效并报错

嘿,我一眼就看出问题所在了——你的SubBusType列表从未被实例化,默认情况下它的初始值是null。当你执行XMLInformation.BusType = "Test";时,set方法里调用SubBusType.Add(value),本质是在对一个null对象调用方法,这必然会触发NullReferenceException(也就是你看到的错误,哪怕是德语提示,空引用异常也是这类场景的典型问题)。

修正方案

你只需要确保SubBusType在使用前完成初始化,这里有几种常用的方式:

方式1:声明List时直接初始化

public class XMLInformation {
    public string BusType { 
        get { return SubBusType.LastOrDefault(); } 
        set { SubBusType.Add(value); } 
    }
    // 直接在声明时实例化List
    public List<string> SubBusType { get; set; } = new List<string>();
}

方式2:在类的构造函数中初始化

public class XMLInformation {
    // 构造函数里完成List的实例化
    public XMLInformation() {
        SubBusType = new List<string>();
    }

    public string BusType { 
        get { return SubBusType.LastOrDefault(); } 
        set { SubBusType.Add(value); } 
    }
    public List<string> SubBusType { get; set; }
}

方式3:限制外部修改List引用(更安全)

如果你不想让外部代码直接替换SubBusType的引用,可以把它的setter设为私有:

public class XMLInformation {
    public string BusType { 
        get { return SubBusType.LastOrDefault(); } 
        set { SubBusType.Add(value); } 
    }
    // 私有setter避免外部替换List引用
    public List<string> SubBusType { get; private set; } = new List<string>();
}

修改后,当你设置BusType的值时,就能正常把元素添加到SubBusType列表里了,get方法也能正确返回列表的最后一个元素(如果列表为空则返回null)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 08:07:56