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 について誤解しているのでしょうか?