C#中为Null枚举数组赋值时遇System.NullReferenceException的解决方法
解决枚举数组空引用异常并动态添加元素的方法
首先,你遇到的NullReferenceException原因非常明确:你只声明了Name[] names;,但没有实际创建数组实例,此时names的值是null,尝试访问names[0]当然会触发空引用异常。而且数组的大小是固定的,既然用户输入数量不确定,用数组本身就不是适配这种场景的最佳选择。
最优方案:使用泛型列表List<Name>
List<T>是C#专门为动态元素集合设计的类型,它支持自动扩容,完美匹配输入数量不固定的需求:
- 把原数组声明替换为列表并初始化:
private static List<Name> names = new List<Name>();
- 在方法中添加用户输入的枚举值:
public static string GetName(Name input) { names.Add(input); // 直接调用Add方法动态添加元素,无需提前指定大小 // 这里可以补充你的业务逻辑,比如返回枚举对应的字符串 return input.ToString(); }
- 如果后续需要将列表转为数组(比如某些API要求数组类型),只需一行代码:
Name[] namesArray = names.ToArray();
若必须使用数组(不推荐)
如果因为特殊限制一定要用数组,你需要先确定要存储的元素数量,再初始化数组。比如可以先收集所有用户输入,再创建对应大小的数组:
// 假设已收集到所有用户输入的List<Name> inputList private static Name[] names = inputList.ToArray();
但这种方式灵活性很差,每次添加新元素都需要重新创建数组,效率低下,因此优先推荐使用List<Name>。
内容的提问来源于stack exchange,提问作者Arunkumar
相关产品推荐
相关产品推荐

