【发布时间】:2016-07-01 10:51:03
【问题描述】:
在下面的程序中,(!testlist.Any()) 抛出一个参数空异常。 Any() 扩展方法默认不处理空值吗?
什么是正确的方法?当List<int> 用作方法中的参数时,是否应该在 Any() 之前添加空检查?
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello, world!");
foo(null);
}
public static void foo(List<int> testlist)
{
if (!testlist.Any())
{
Console.WriteLine("testlist is empty!");
}
}
}
【问题讨论】:
-
if (!testList?.Any() ?? false) { doStuff(testList); }除非你想重新抛出异常。 -
它通过抛出异常来“处理”集合的空值。
-
如果
source or predicate is null则抛出ArgumentNullException -
如果我有时间,我会写一个冗长的答案,解释答案取决于你的方法的合同,解释什么是合同以及它为什么重要。 SO上有很多这样的答案-也许有人想找到并链接到一个?
标签: c# .net list int extension-methods