我应该返回null还是空列表

本文关键字:列表 返回 null 我应该 | 更新日期: 2023-09-27 17:49:58

我有一个类型实体列表,通过实体框架从DB获得值。如果空结果集作为空值或空列表返回,如下所示:

    private List<Order> _myOrders;
    public List<Order> myOrder
    {
        get
        {
            return this._myOrders ?? new List<Order>();
        }
        set
        {
            this._myOrders = value;
        }
    }

任何处理代码都会对表使用count()而不是"! "= null"测试?什么被认为是更好的实践。我怀疑应该尝试在属性中管理null,否则就会到处写null测试代码。

想法吗?

谢谢。

我应该返回null还是空列表

我倾向于返回一个空列表。

在概念层面上,null表示未知。在您的案例中,与客户相关的订单不是未知的;相反,没有命令。空列表精确地表示这一点,而null是不精确的,可能是模棱两可的——"null"订单意味着没有订单,还是仅仅意味着订单属性还没有被填充?

在实际层面上,通过返回一个空列表,对顺序进行计算的代码可能需要较少的边角情况检查。例如,使用foreach迭代订单列表的方法应该可以很好地处理长度为零的订单列表(不会发生迭代),而对于没有订单使用null则需要该方法进行安全检查。

我不同意Ben的观点;尽管如此,他的观点还是基于被广泛接受的理论。虽然使用null返回所涉及的错误处理较少,但我更喜欢它而不是空列表,因为对我来说,它似乎是对资源的浪费。当然,这是一个基于偏好的场景。不过,它实际上是基于应用程序的总体设计的。不管清单是空的,你打算用它做点什么吗?如果是这样,那么null就不是一种选择。您必须决定简单的.count()检查的便利性是否超过为检查null而节省资源所需编写的额外代码行。至于能节省多少资源,我不知道。考虑到您需要对null执行额外的检查,您正在为周期交换内存。

对我说的话半信半疑。我才编程一年。