检查对象是否为空

时间:2015-03-19 05:49:12

标签: c# function object null asp.net-mvc-5

我正在编写MVC 5互联网应用程序,在设置对象中的某些值之前,我有一个关于检查对象是否为空的问题。

以下是一些示例代码:

public async Task TestFunction(TestObject obj)
{
    obj.name = "Test Name";
    repository.Insert(obj);
}

每次函数调用之前是否应该检查对象是否为null?是否有必要在函数调用中检查对象是否为空?

提前致谢。

1 个答案:

答案 0 :(得分:3)

这取决于函数的用途,在您的函数中,您似乎将使用它将对象插入到存储库中,因此将空对象传递到存储库应该抛出异常而不是静默失败。 / p>

如果参数为null,则应检查null并抛出ArgumentException

public async Task TestFunction(TestObject obj)
{
    if(obj == null) {
        throw new ArgumentException("obj cannot be null");
    }

    obj.name = "Test Name";
    repository.Insert(obj);
}

但是,在某些情况下,您可以拥有一个可以接受空对象的函数,如果您确实将其传入,则可能返回默认值。

不要写这样的代码:

public async Task TestFunction(TestObject obj)
{
    if(obj != null) {//if null don't do anything 
        obj.name = "Test Name";
        repository.Insert(obj);
    }
}

这个方法什么都不做,如果调用它的开发人员没有意识到传递的对象是null,那么它将无声地失败而不让开发人员知道发生了什么。