9

このコードが機能することに驚きました:

string category = null;
Category Category = null;
int categoryId = 0;

var products = repository.Products
    .Where(p => category == null || p.CategoryID == categoryId)
    .ToList();

それでも、以下のコードは失敗します:

string category = null;
Category Category = null;
int categoryId = 0;

var products = repository.Products
    .Where(p => category == null || p.CategoryID == Category.CategoryID)
    .ToList();

|| を使用しているにもかかわらず、問題があることはわかっています。オペレーター--私が思っているようには機能しません。

2 番目の例では、カテゴリの値が null であるにもかかわらず、カテゴリが参照されるのはなぜですか。短絡しませんか?

4

1 に答える 1