如何测试Action< ...>一片空白?

时间:2013-05-20 16:28:29

标签: c# .net null functional-programming nullreferenceexception

假设我有一个如下所示的函数:

public void DoSomething(Action<object> something)
{
    something(getObject());
}

如果something为null,则此代码将引发NullReferenceException。

但是,something == null将无法编译,因此如何测试something以确定它是否为空?

4 个答案:

答案 0 :(得分:8)

您应该能够直接测试null。编译好了:

public void DoSomething(Action<object> something)
{
    if (something == null) // Note that there are no () on something
    {
        throw new ArgumentNullException("something");
    }

    something(GetObject()); // Assumes `GetObject()` method is available on class, etc
}

答案 1 :(得分:3)

你试过了吗?

if(something == null) throw new ArgumentNullException("something");

我看不出为什么不能编译?

答案 2 :(得分:2)

if(something == null)
{
    throw new ArgumentNullException("something");
}

这应该可以作为方法的第一个块。

答案 3 :(得分:1)

你是如何写出“某事== null”的陈述?下面为我​​编译,我认为你可以调整一下以获得适当的if / else条件。

    public void DoSomething(Action<object> something)
    {
        if (something != null)
        {
            something(getObject());
        }
    }