5

重複の可能性:
ラムダ式: == vs. Equals()

やあ、

私は、変数やその他のものを比較するために Equals というキーワードをよく使用します。

しかし

wines = wines.Where(d => d.Region.Equals(paramRegion)).ToList();

データ領域が NULL の場合、実行時にエラーを返します

コードを使用する必要がありました

wines = wines.Where(d => d.Region == paramRegion).ToList();

エラーを取り除くために。

これがエラーを発生させる理由はありますか?

ありがとう。

4

3 に答える 3

5

null オブジェクト参照でインスタンス メソッドを呼び出すことはできません。インスタンス メソッドを呼び出す前に、Region が null でないことを確認する必要があります。

wines = wines.Where(d => d.Region != null && d.Region.Equals(paramRegion)).ToList();

d.Region == paramRegionは (ほとんどの場合) 展開されobject.Equals(d.Region, paramRegion)、その静的メソッドは Equals() メソッドを呼び出す前にパラメーターが null かどうかをチェックします。

paramRegionが null にならないことがわかっている場合は、条件を別の順序で記述することもできます。

Debug.Assert(paramRegion != null);
wines = wines.Where(d => paramRegion.Equals(d.Region)).ToList();
于 2011-01-29T14:27:18.327 に答える
3

基本的には

d.Region == null

次に、任意のメソッド呼び出し。ここでは、初期化されていないため例外が発生するEquals(...)です。

于 2011-01-29T14:27:28.427 に答える
0

使用できる:

paramRegion.Equals(d.Region)
于 2011-01-29T14:35:49.610 に答える