linqで等しいキーワードを使用[複製
-
27-10-2019 - |
質問
可能な複製:
Lambda式:== vs. Equals()
やあ、
私は多くのことを使用しますキーワードは変数やその他のものを比較するために等しくなります。
しかし
wines = wines.Where(d => d.Region.Equals(paramRegion)).ToList();
データ領域がnullの場合に実行時にエラーを返します
コードを使用する必要がありました
wines = wines.Where(d => d.Region == paramRegion).ToList();
エラーを取り除くには。
これがエラーを引き起こす理由はありますか?
ありがとう。
解決
nullオブジェクト参照を使用してインスタンスメソッドを呼び出すことはできません。インスタンスメソッドを呼び出す前に、領域がヌルでないことを確認する必要があります。
wines = wines.Where(d => d.Region != null && d.Region.Equals(paramRegion)).ToList();
d.Region == paramRegion
(ほとんどの場合)に拡張されます object.Equals(d.Region, paramRegion)
また、その静的方法は、equals()メソッドを呼び出す前に、パラメーターがnullかどうかを確認します。
あなたがそれを知っていれば、あなたは別の順序で条件を書くこともできます paramRegion
ヌルにすることはできません。
Debug.Assert(paramRegion != null);
wines = wines.Where(d => paramRegion.Equals(d.Region)).ToList();
他のヒント
基本的には
d.Region == null
次に、任意のメソッド呼び出し、ここにあります 平等(...) それは、初期化されていないため、例外が発生します。
使用できます:
paramRegion.Equals(d.Region)
所属していません StackOverflow