对空对象调用Any()时,它会在C#中抛出ArgumentNullException.如果对象为null,则肯定没有"any",并且它可能会返回false.

C#为什么会这样?

推荐答案

在处理引用类型时,值null与"空"值在语义上是不同的.

null字符串与string.Empty不同,null IEnumerable<T>Enumerable.Empty<T>不同(或该类型的任何其他"空"可枚举项).

如果Any不是扩展方法,则在null上调用它将导致NullReferenceException.因为它is是一个扩展方法,所以抛出一些异常(虽然不是必须的)是个好主意,因为它保留了try 调用null:BOOM!上的方法的众所周知的语义

.net相关问答推荐

";Make Async ValueTask/ValueTask方法分期分配发生了什么?

EFCore.DbSet.Update 方法添加新行而不是更新它

无法解析此引用.找不到程序集

StreamWriter.Flush() 和 StreamWriter.Close() 有什么区别?

为 XML 编码文本数据的最佳方法

将 int 转换为 .NET 中的位数组

一种消耗(所有字节)BinaryReader 的优雅方式?

使文本框不可编辑

在 Moq Callback() 调用中设置变量值

C# 中 try/finally 的开销?

DBNull 的意义何在?

软件包版本始终为 1.0.0,带有 dotnet pack

将 StreamReader 返回到开头

使用 XmlDocument 读取 XML 属性

我应该如何删除 DbSet 中的所有元素?

DateTime.Compare 如何判断日期是否小于 30 天?

通过继承扩展枚举

WinForms 中的模型视图演示者

浮动与双重性能

在类型 c# 上切换大小写