タグ付けされた質問 「nullreferenceexception」

28
NullReferenceExceptionとは何ですか?どのように修正しますか?
この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答や相互作用を受け入れていません。 StackатотвопросестьответынаStack Overflowнарусском:ЧтотакоеNullReferenceException、икакмнеисправитькод? 私はいくつかのコードを持っていて、それが実行されると、をスローして次のようNullReferenceExceptionに言います: オブジェクト参照がオブジェクトインスタンスに設定されていません。 これはどういう意味ですか?このエラーを修正するにはどうすればよいですか?

16
C#でオブジェクトがnullかどうかを確認する
オブジェクトがnullの場合、それ以上処理されないようにしたいと思います。 次のコードで、オブジェクトがnullかどうかを次のいずれかで確認します。 if (!data.Equals(null)) そして if (data != null) しかし、私は受信NullReferenceException時dataList.Add(data)。オブジェクトがnullの場合、if-statementに入る必要はありません! したがって、これがオブジェクトがnullかどうかを確認する適切な方法であるかどうかを尋ねています。 public List<Object> dataList; public bool AddData(ref Object data) bool success = false; try { // I've also used "if (data != null)" which hasn't worked either if (!data.Equals(null)) { //NullReferenceException occurs here ... dataList.Add(data); success = doOtherStuff(data); } } …

2
型の初期化子を見つけるとNullReferenceExceptionがスローされるのはなぜですか?
これは私を困らせました。野田タイムのためにいくつかのテストを最適化しようとしていました。そこでは、いくつかのタイプ初期化チェックを行っています。すべてをnewにロードする前に、型に型初期化子(静的コンストラクターまたは初期化子付きの静的変数)があるかどうかを確認すると思いましたAppDomain。驚いたことに、この小テストが投げたNullReferenceException-にヌル値がされていないにも関わらず、私のコード。デバッグ情報なしでコンパイルされた場合にのみ例外をスローします。 これは、問題を示すための短いが完全なプログラムです。 using System; class Test { static Test() {} static void Main() { var cctor = typeof(Test).TypeInitializer; Console.WriteLine("Got initializer? {0}", cctor != null); } } そして、コンパイルと出力のトランスクリプト: c:\Users\Jon\Test>csc Test.cs Microsoft (R) Visual C# Compiler version 4.0.30319.17626 for Microsoft (R) .NET Framework 4.5 Copyright (C) Microsoft Corporation. All rights reserved. c:\Users\Jon\Test>test …

19
プロパティのプロパティがnullかどうかを確認するC#のエレガントな方法
C#で、この例ではPropertyCから値をプルしたいとし、ObjectA、PropertyA、PropertyBはすべてnullにすることができます。 ObjectA.PropertyA.PropertyB.PropertyC 最小限のコードでPropertyCを安全に取得するにはどうすればよいですか? 今私はチェックします: if(ObjectA != null && ObjectA.PropertyA !=null && ObjectA.PropertyA.PropertyB != null) { // safely pull off the value int value = objectA.PropertyA.PropertyB.PropertyC; } このようなもの(疑似コード)を実行するとよいでしょう。 int value = ObjectA.PropertyA.PropertyB ? ObjectA.PropertyA.PropertyB : defaultVal; nullコアレッシング演算子でさらに折りたたまれている可能性もあります。 編集元々、2番目の例はjsのようだと言っていましたが、jsでは機能しないことが正しく指摘されていたため、擬似コードに変更しました。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.