我注意到在使用 Visual Studio 2010 开发我的 C# 应用程序时有一个奇怪的地方。在某些情况下,据我所知,应该抛出 NullReferenceException 时不会抛出异常。相反,应用程序会继续正常运行,但会卡住,以至于我无法正常关闭它并被迫将其杀死。
例如,考虑以下情况:
public class MyControl : UserControl
{
private SomeClass myObj;
public MyControl()
{
Bar();
myObj = new SomeClass();
}
public void Bar()
{
myObj.SomeProperty = 5; // myObj is null here but no exception gets thrown
}
}
代码在执行时不会抛出异常,而是myObj.SomeProperty = 5;
跳出函数返回到MyControl
父窗体调用构造函数的位置。我可以让调试器在其他情况下捕获 NullReferenceExceptions(以及其他异常),而不是像这样。
应该在这里抛出 NullReferenceException 还是我误解了有关 C# 和/或 .NET 的一些东西?