GetAll
会返回IEnumerable
,在这种情况下,null
List<TaskNote> notes = noteManager.GetAll(newTaskId).ToList();
我收到如下错误:
System.ArgumentNullException:&#39;值不能为null。参数名称: 源&#39;
这是预期的吗?在执行ToList()
之前,我是否应该始终检查null?
答案 0 :(得分:5)
最佳做法是在返回集合或可枚举时永远不会返回null。总是返回一个空的枚举/集合。
您可以轻松返回空的枚举而不是null。
public IEnumerable<Test> GetTest()
{
return GetTestForMe() ?? Enumerable.Empty<Test>();
}
使用Enumerable.Empty<T>()
可以被视为比返回null更有效。优点是Enumerable.Empty
不会在调用时创建对象,因此它会减少对GarbageCollector
的负担。
Enumerable.Empty<T>
缓存空集合的创建,因此将始终返回相同的集合。
答案 1 :(得分:3)
黄金法则:不要为集合类型返回null。
在执行ToList()之前,我是否应该始终检查null?
这取决于谁是GetAll
方法的所有者。如果你 - 遵守规则,如果没有 - 更好的检查。
答案 2 :(得分:0)
rows 4020
reserved 2974576 KB
data 2974168 KB
index_size 40 KB
unused 368 KB
这是做NUll CHECK的简短代码;