ToList() - 处理参数为空异常

6

你好,我有一个名为Activity的类,

在表单上,我将其对象数组创建为:

 Activity[] _actList; 

然后进行以下操作,

List<Activity> termsList = _actList.ToList<Activity>();

由于_actiList为空,所以会抛出ArgumentNullException异常。

我的问题是:

我该如何处理此异常?
或者有没有绕过方式来获得相同的功能?

请帮忙!


1
你的意思是不进行初始化吗?你期望得到一个空列表吗? - Neville Nazerane
@NevilleNazerane 是的,可以不初始化。 - Sunitha
没有初始化 _actList,你期望机器将什么放入 termsList 中? - bansi
3个回答

11

在调用ToList之前,您需要检查是否为null。

var termsList = _actList == null ? null : _actList.ToList(); 

如果你正在使用C# 6.0或更高版本,你可以用更短的方式来写同样的代码:

var termsList = _actList?.ToList(); 

如果数组经常为空,我不建议您在这种情况下捕获异常。


@Sunitha 很高兴能帮助您 :). FYI 不需要为 ToList 指定类型参数,您可以这样做,但编译器可以自动处理,因此建议省略它,除非您有充分的理由将其放在那里。 - Titian Cernicova-Dragomir
好的,谢谢你 :) - Sunitha

0
你可以通过分配一个空的默认数组来确保数组永远不为空。
Activity[] _actList = new Activity[] { };

因此,当表单被初始化时,数组也将被初始化为空数组。如果您现在执行 .ToList(),则会得到一个空列表,而不是异常。


抽象类的实例? - bansi
@bansi 它不是 Activity 类的实例,而是数组的实例。 - Neville Nazerane

0

使用try catch,可以处理任何类似的问题:

try {
    List<Activity> termsList = _actList.ToList<Activity>();
}
catch(ArgumentNullException){

}

或者你可以使用 ?? 运算符来设置默认值,如果它是 null 的话:

List<Activity> termsList = (_actList ?? new Employee[] { }).ToList<Activity>();

如果你的数组为空,这将给你一个空列表。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接