一尘不染

函数应该返回null还是空对象?

c#

已锁定 。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。

从函数返回数据时的 最佳实践 是什么。返回Null还是空对象更好?又为什么一个要比另一个做呢?

考虑一下:

public UserEntity GetUserById(Guid userId)
{
     //Imagine some code here to access database.....

     //Check if data was returned and return a null if none found
     if (!DataExists)
        return null; 
        //Should I be doing this here instead? 
        //return new UserEntity();  
     else
        return existingUserEntity;
}

让我们假设在该程序中可能存在这样的情况:具有该GUID的数据库中将没有用户信息。我可以想象在这种情况下抛出异常是不合适的?另外,我的印象是异常处理会损害性能。


阅读 461

收藏
2020-05-19

共1个答案

一尘不染

如果您打算指示没有可用数据,则返回null通常是最好的主意。

空对象表示已返回数据,而返回null则表示未返回任何内容。

此外,如果您尝试访问对象中的成员,则返回null会导致null异常,这对于突出显示错误代码很有用-
尝试不访问任何成员都是没有意义的。访问空对象的成员不会失败,这意味着错误可能会被发现。

2020-05-19