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
相关产品推荐
相关产品推荐

