你好,我有一个名为Activity的类,
在表单上,我将其对象数组创建为:
Activity[] _actList;
然后进行以下操作,
List<Activity> termsList = _actList.ToList<Activity>();
由于_actiList
为空,所以会抛出ArgumentNullException
异常。
我的问题是:
我该如何处理此异常?
或者有没有绕过方式来获得相同的功能?
请帮忙!
你好,我有一个名为Activity的类,
在表单上,我将其对象数组创建为:
Activity[] _actList;
然后进行以下操作,
List<Activity> termsList = _actList.ToList<Activity>();
由于_actiList
为空,所以会抛出ArgumentNullException
异常。
我的问题是:
我该如何处理此异常?
或者有没有绕过方式来获得相同的功能?
请帮忙!
在调用ToList
之前,您需要检查是否为null。
var termsList = _actList == null ? null : _actList.ToList();
如果你正在使用C# 6.0或更高版本,你可以用更短的方式来写同样的代码:
var termsList = _actList?.ToList();
如果数组经常为空,我不建议您在这种情况下捕获异常。
ToList
指定类型参数,您可以这样做,但编译器可以自动处理,因此建议省略它,除非您有充分的理由将其放在那里。 - Titian Cernicova-DragomirActivity[] _actList = new Activity[] { };
因此,当表单被初始化时,数组也将被初始化为空数组。如果您现在执行 .ToList(),则会得到一个空列表,而不是异常。
Activity
类的实例,而是数组的实例。 - Neville Nazerane使用try catch,可以处理任何类似的问题:
try {
List<Activity> termsList = _actList.ToList<Activity>();
}
catch(ArgumentNullException){
}
或者你可以使用 ?? 运算符来设置默认值,如果它是 null 的话:
List<Activity> termsList = (_actList ?? new Employee[] { }).ToList<Activity>();
_actList
,你期望机器将什么放入termsList
中? - bansi