C# 如何在运行前检测NullReferenceException?

C# 如何在运行前检测NullReferenceException?,c#,C#,需要知道是否有可用的免费工具,或者如何在运行前检测NullReferenceException 我有一段代码,比如 SomeObject.SomeMethod() // Here SomeObject can throw NullReferenceException 有没有办法在运行前检测到这一点?您将无法捕获错误,因为这是一个运行时错误,但是您可以将代码放在try catch中,以捕获并处理您想要的错误 try { SomeObject.SomeMethod() } ca

需要知道是否有可用的免费工具,或者如何在运行前检测NullReferenceException

我有一段代码,比如

    SomeObject.SomeMethod() // Here SomeObject can throw NullReferenceException 

有没有办法在运行前检测到这一点?

您将无法捕获错误,因为这是一个运行时错误,但是您可以将代码放在try catch中,以捕获并处理您想要的错误

try {
    SomeObject.SomeMethod() 
}
catch(NullReferenceException) {    
 //catch exception here
}

为什么不在调用前检查is
SomeObject
是否为null

C#6

在C#6之前


NullReferenceException是运行时异常如果在运行时之前无法检测到它,您可以编写代码来检查它是否为null,并做一些更好的事情来代替该异常。。或者处理异常并做一些事情编写好的单元测试您可以使用resharper获得一个月的免费时间,它会让您知道它们在哪里,它还会建议您使用或不使用其他修复。我只有在理解变化的情况下才会这样做,否则我不会。但它是好的。如果你没有钱购买许可证,那么这不是一个长期的解决方案我没有预算,有没有像resharper这样的免费工具可用?取决于你是否使用C#6这会起作用,但我使用的是.Net 4.5:(@user3326623框架版本与您使用C#6的能力无关。如果您愿意,您可以将其与.NET 2.0一起使用。如果您希望某个对象为null,则不应使用异常处理来进行检查,这在计算上太昂贵。如果没有异常,即使从未调用的try/catch也会使用数千个额外的周期hrown,将有数百万个额外的周期。
SomeObject?.SomeMethod();
if(SomeObject!=null) SomeObject.SomeMethod();