c# - 我是否应该始终检查某些东西的返回值是否为空

标签 c# null

如果在一个 A 类中:

Class A
    public List<string> getValues

如果我想调用该方法,我是否应该始终检查返回值是否为空?尽管我不认为它可能为空(应该是一个空列表)。 即

Class B
    public void GetSomething
        foreach (var thing in A.getValues)
            //do something....

Class B
    public void GetSomething
        var things = A.getValues;
        if (things != null)
        foreach (var thing in things)
            //then doing something....

问这个问题的原因是我在写单元测试的时候让A类的方法返回null而不是空列表,但是我不知道在现实生活中是否会发生这种情况,因为如果它可以为null那么它检查而不是 try catch 异常总是好的,哪个更合适?

最佳答案

简而言之,不,您不应该总是过牌。您使用的方法的规范应该始终清楚地说明您期望的可能结果的语义是什么。因此,例如,如果您希望 getValues 在没有值时返回一个空列表,并且错误地将其编写为返回一个 null 对象,那么 NullPointerException 是一个非常理智的事情。这是警告你,你搞砸了你的方法的规范或它的实现。 另一方面,也可能是 getValues 返回空对象,因为未满足某些条件。在那种情况下,您应该检查一下,因为它实际上意味着某些东西。

关于c# - 我是否应该始终检查某些东西的返回值是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15222573/

相关文章:

c# - 从 Active Record 转移到领域对象模式方法

c# - C# long 类型的等效 SQL Server 类型是什么?

c# - Json序列化错误 "There is already an open DataReader associated with this Command"

c# - 修剪文本文件中的每一行,然后将结果保存到数组中

powershell - 如何在 PowerShell 中测试 $null 数组

sql - VBA 查询中臭名昭著的 'Invalid USe of Null'

vb.net - 函数不会在所有代码路径上返回值。使用结果时,可能会在运行时发生空引用异常

c# - 我怎样才能加入一个字符串数组,但首先删除数组中的空元素?

swift - 从 NSManagedObject 中删除 Nil 值

c# - 什么是NullReferenceException,如何解决?