假设我有一个如下所示的函数:
public void DoSomething(Action<object> something)
{
something(getObject());
}
如果something
为null,则此代码将引发NullReferenceException。
但是,something == null
将无法编译,因此如何测试something
以确定它是否为空?
答案 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());
}
}