我应该返回空列表还是空列表?

时间:2014-03-12 21:53:07

标签: c# linq

我有一个类型实体列表,它通过Entity Framework从DB获取值。如果将null结果集返回为null或空列表,如下所示:

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

任何处理代码都会对表使用count()而不是“!= null”测试?什么被认为是更好的做法。我怀疑应该尝试管理属性中的空值,否则就会在整个地方编写空测试代码。

思想?

感谢。

2 个答案:

答案 0 :(得分:7)

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

在概念层面,null表示未知。在您的情况下,与客户相关的订单并不为人所知;相反,没有订单。空列表恰好表示这一点,而null是不精确的,可能是不明确的 - &#34; null&#34;订单意味着没有订单,或仅仅是订单属性尚未填充?

在实际层面,通过返回一个空列表,对订单进行计算的代码可能需要更少的角落检查。例如,使用foreach迭代订单列表的方法应该可以正常使用零长度订单列表(不会发生迭代),而对于没有订单使用null将要求该方法进行安全检查。

答案 1 :(得分:1)

我不同意本;尽管如此,基于广泛接受的理论,他有一个很好的观点。虽然使用null返回涉及的错误处理较少,但我更喜欢它在空列表中,因为对我而言,它似乎浪费了资源。当然,这是一个非常偏好的场景。然后,它真的基于您的应用程序的整体设计。你是否计划用该列表做任何事情而不管它是空的?如果是这样,那么null将不是一种方法。您必须确定简单.count()检查的容易程度是否超过了您需要编写的额外代码行以检查null以节省资源。至于节省多少资源 - 我不知道。考虑到您需要对空值执行额外检查,您需要将内存交换为周期。

用一粒盐说话。我只编程了一年。