c# - 检查对象是否为空

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

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

下面是一些示例代码:

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

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

提前致谢。

最佳答案

这取决于函数的用途,在您的函数的情况下,您似乎将使用它来将对象插入存储库,因此将空对象传递到存储库应该会引发异常,而不仅仅是默默地失败。

您应该检查 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,则它会静默失败而不让开发人员知道发生了什么。

关于c# - 检查对象是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29138009/

相关文章:

function - 有没有办法在 Lua 中将本地函数按任意顺序排列?

c++ - 函数、数组和动态数组

C++:在没有隐式默认构造函数的情况下初始化成员类的选择(问题主体中有更多约束)

c# - DateTimeOffset 正确使用

c# - Linq-按自定义顺序发出

c - 在C中定义一个函数以从用户处获取二维矩阵的元素

java - 对象内对象的内存分配

javascript - OOP Javascript - Getter & Setters

c# - 根据相同字符串在列表中出现的频率使用 C# 对列表进行排序

c# - 我想做的是 FreezableCollection.AddRange(collectionToAdd)