この 2 つのステートメントの違いを説明してください。
最初のステートメントは例外をスローし、2 番目のステートメントはブール値を返します
Version a = null;
if(a.Equals(null)) // throw the exception
if(Equals(a,null)) // return the bool value true
オブジェクトでa.Equals初期化せずに呼び出すことはできません。そうしないと、がスローされますが、静的メソッドであり、渡された 2 つの参照が同じかどうかをチェックします。これらの参照は null 値を持つことができます。aNullReferenceExcptionEquals
a.Equalsはインスタンス メソッドです。 is の場合aは、 isのメソッドを呼び出しているため、nullがスローされます。NullReferenceExcptionanull
もう 1 つEqualsは on の静的メソッドObjectです。これはスローしません。渡される両方のオブジェクトが である場合は、 をnull返しますtrue。