NullReferenceException は、null の値を持つ任意の型のメンバーにアクセスしようとしたときにプログラムによってスローされる例外です。つまり、値がないか null 値を保持する変数にアクセスしようとすると、Null Reference 例外が発生します。投げられる。この例外は、.NET、.NET Core、および .Net Framework のさまざまなリリースに適用されます。 C# のこれらの参照変数は、C のポインターの概念と完全に一致しています。NullReferenceException が発生する状況はさまざまで、それを回避または解決する方法は複数あります。
構文:
NullReferenceException の実装に使用される標準構文は次のとおりです。
public class NullReferenceException :SystemException
Null 参照例外は、基本的にオブジェクト内および例外内に存在するシステム例外から継承されます。ご存知のとおり、これは最も一般的な例外の 1 つであり、これを処理するにはさまざまな方法があります。
簡単に理解すると、Null 参照例外は、他のオブジェクトを参照していない変数にアクセスしようとしたイベントの結果です。ここで、参照の参照は問題になりませんが、参照変数が他のオブジェクトを参照していない場合、基本的に null として扱われます。ここで問題が発生するのは、コードが null になるポイントを参照し、NullReferenceException という例外が発生する場合です。プログラムによって Null 参照例外がスローされるさまざまなシナリオが考えられます。プログラムを実行し、null 参照例外が発生した場合、出力は次のようになります。
未処理の例外:
System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。
例外の内容とその仕組みを理解したので、例を使って例外を適切に説明しましょう。最初の例は非常に単純ですが、null 値を保持する単純な変数があり、その変数を処理しようとしますが、null であるため、null 参照例外がスローされます。プログラムのコードは次のとおりです:
コード:
using System; public class SampleProgram { public static void Main() { string name = null; varval =name.ToString(); Console.WriteLine(val); } }
コードの説明: System を使用して述べたように、パブリックなクラス Sample があります。次に、静的な void メイン ステートメントがあり、続いて name という名前の単純な文字列変数が作成されます。割り当てられる値は null (変数に値がないことを意味します) です。ここではこの文字列変数が重要です。後で val という名前の別の変数を作成し、そこで name の値を文字列に変換しようとします。最後に、name の値を出力する print ステートメントを作成しました。この値は ToString() を使用して変換されます。出力については、以下の添付スクリーンショットを参照してください:
出力:
正しく実行されると、コードは NullReferenceException というエラーをスローします。その理由は、ToString() メソッドを呼び出そうとすると変数名に移動しますが、変数名には値がなく、null を意味するためです。ご存知のとおり、ToString() を使用して null 値を変換することはできません。したがって、コードはエラーを出力するだけです。これは、コードが期待どおりに実行されていることを意味します。
説明したように、プログラムは例外により終了されました。次に、別の簡単な例を示します。説明したように、同じ例外が発生します。
コード:
using System; class SampleProgram { static void Main() { string val = null; if (val.Length == 0) { Console.WriteLine(val); } } }
コードの説明: 最初の例と同様に、ここには名前空間と最初の呼び出しがあり、メイン ステートメントが保持されています。これで、値が null の文字列変数が得られます。これが主要な変数となり、予期される例外が発生します。次に、変数の長さがゼロかどうかをチェックする単純な if 条件があり、ゼロであれば次のステップに進んで値を出力します。ただし、if 内で例外が発生するため、コードは最後の print 行には移動しません。出力については、以下の添付スクリーンショットを参照してください:
出力:
ここでは、出力は最初の例と同じ「ハンドルされない例外」です。例外が同じであるためです。ここで関数を実装しようとしましたが、説明したように、変数に null 値が含まれているため、Null Reference Exception が発生します。この null 参照例外がどのように、なぜ発生するのかを見て理解できたので、プログラムの機能を向上させるためにこの例外を回避する方法を理解することが重要です。
The Null Reference Exception is not a major error, but one of the common ones and one of the basic and simple way to avoid the Null Reference Exception is to check the variable or property before moving ahead and accessing it. And a very basic way to do this is to check the variable within an if statement. We will demonstrate an example where we will avoid the occurrence of the exception and the code will move on.
Code:
using System; class SampleProgram { static void Main() { string val = null; if (val == null) { Console.WriteLine("\n Value to the variable is null."); } else{ Console.WriteLine(val); } } }
Output:
Code Explanation: Here we have our class which holds the main statement than a variable with a null value. Then we enter an if else statement, where the value of the variable is checked if it is null, the print statement will be printed and the program will terminate, if the value is not null, then it will move ahead and into else part, it will print the value. As expected our code printed that “Value to the variable is null.” because the value is null. If we try the same example with a string value, the program will proceed and the else part will be printed.
The NullReferenceException is encountered when we attempt to access a variable which holds a null value, it can be variable or object. The reference should not hold null value else the exception will be thrown. There are many situations where this can be seen and the simplest way to avoid the NullReferenceException is to check beforehand, before accessing the value.
以上がC# NullReferenceExceptionの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。