【问题标题】:Easy way to know which methods return null in .NET Framework [closed]了解 .NET Framework 中哪些方法返回 null 的简单方法 [关闭]
【发布时间】:2012-07-18 15:50:35
【问题描述】:

我希望能够知道 .NET Framework 中哪些方法返回 null。

例如;当我从IQueryable 调用搜索方法时,如果搜索未找到任何结果,它将返回 null 或空集合。

我们学习了一些方法,但是当涉及到新方法时,我总是编写额外的代码行,这使得代码更难阅读。

有没有简单的方法来解决这个问题?

编辑:

我总是遇到这个问题是这样的:

List<int> ints = new List<int>(); // Suppose this is a list full of data

// I wanna make sure that FindAll does not return null
// So getting .Count does not throw null reference exception
int numOfPositiveInts = ints.FindAll(i => i > 0).Count;

// This is not practical, but ensures against null reference return
int numOfPositiveInts = ints.FindAll(i => i > 0) != null ? ints.FindAll(i => i > 0).Count : 0;

第一个选项实用但不安全,而第二个选项可防止任何空引用异常但降低可读性。

谢谢。

【问题讨论】:

  • 如果方法返回的类型是 ValueType 它不能为 null,如果它是 referenceType 它可以是 null 或者我误解了你的问题。
  • 大多数方法在返回 null 时会在描述中指定。例如,Where 从不返回 null。 SingleOrDefault 如果 Count()==1 将返回单个元素,如果没有元素,则返回默认值(如果是引用值,则为 null,对于原语为 0 或 false),如果存在多个元素,则抛出异常。
  • @PLB,如果方法返回类型是引用类型,它是否总是可以返回null?我认为一些返回引用的方法(尤其是集合类型)返回空集合而不是空引用。
  • @Mert 返回引用类型意味着它可能为空,因此最好检查对象是否为空。如果您已经看到方法的内部实现并且您确定它不会为 null,那么您不必再次检查 null-s。如果您想知道方法的确切返回值是什么,请阅读官方 .NET 文档。如果您使用其他程序员编写的库并且您无法查看里面的内容,请始终检查是否存在空值。
  • @PLB,我在文档中找不到有关空引用返回的任何信息。你能检查我的编辑吗?

标签: c# null null-check


【解决方案1】:

当您安装Code Contracts 时,会安装辅助程序集,为您提供大多数核心库的合同。有一个以 IntelliSense 样式显示它们的编辑器插件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2011-09-05
    • 2013-01-07
    相关资源
    最近更新 更多