3

假设我有一个看起来像这样的函数:

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

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

但是,something == null不会编译,那么我如何测试something以确定它是否为空?

4

4 回答 4

9

您应该能够直接针对 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
}
于 2013-05-20T16:30:46.093 回答
3

你有没有尝试过:

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

我看不出这不能编译的原因?

于 2013-05-20T16:32:05.650 回答
2
if(something == null)
{
    throw new ArgumentNullException("something");
}

作为您方法的第一块,这应该很有效。

于 2013-05-20T16:31:08.840 回答
1

你是如何写出你的“something == null”语句的?下面是为我编译的,我认为您可以对其进行一些调整以具有适当的 if/else 条件。

    public void DoSomething(Action<object> something)
    {
        if (something != null)
        {
            something(getObject());
        }
    }
于 2013-05-20T16:33:33.567 回答