.net 对NullReferenceException进行测试(不进行无测试)

.net 对NullReferenceException进行测试(不进行无测试),.net,null,nullreferenceexception,nothing,.net,Null,Nullreferenceexception,Nothing,我有一个别人写的类,我没有源代码。它有一个由字符串\u UM支持的属性UM。在某些情况下,\u UM是无。我希望UM也会是Nothing,但是当我检查(使用快速观察)它显示为NullReferenceException的属性时。当我尝试测试Nothing时,我的主代码中会抛出一个NullReferenceException。我怎样才能发现这种情况,以便正确处理它 If Foo.UM Is Nothing Then DoSomething() End If …抛出一个NullRefere

我有一个别人写的类,我没有源代码。它有一个由字符串
\u UM
支持的属性
UM
。在某些情况下,
\u UM
。我希望
UM
也会是
Nothing
,但是当我检查(使用快速观察)它显示为
NullReferenceException
的属性时。当我尝试测试
Nothing
时,我的主代码中会抛出一个
NullReferenceException
。我怎样才能发现这种情况,以便正确处理它

If Foo.UM Is Nothing Then
    DoSomething()
End If

…抛出一个
NullReferenceException

属性可能不仅仅返回_UM字段。可能以某种方式使用了它,但没有考虑到它可能是
null
。您可以这样做来处理它:

Dim obj = Nothing
Try
    obj = Foo.UM
Catch ex As NullReferenceException
End Try
If obj Is Nothing Then
    DoSomething()
End If

可能会引发异常,因为
Foo
Nothing
。Foo不是Nothing。我可以看到其他属性。请尝试。。。catch NullReferenceException…我同意该属性可能除了返回
\u UM
之外还做了其他事情,但是,我并不特别在意。我只需要测试并采取行动。有没有想过如何做到这一点?我希望避免这种情况,因为处理异常会带来相当大的开销…哦,好吧。这门课在其他方面相当糟糕,我不应该感到惊讶。谢谢你的建议。例如,你可以用Reflector反编译外部dll,看看属性中到底发生了什么。