为什么逻辑评估不会因为"假"结果而停止?

Pab*_*blo 0 c# logical-operators

testExceptions 是字典.

var testConfigurations = cells.SelectMany(x => x.TestConfigurations).Where(
   y => y.ID == testId && 
   !testExceptions[index].ContainsKey(y.Cell) && 
   !testExceptions[index][y.Cell].Contains(y.ID)
).ToList();
Run Code Online (Sandbox Code Playgroud)

!testExceptions[index][y.Cell].Contains(y.ID)testExceptions不包含密钥时给我一个例外y.Cell.但是因为我正在检查,ContainsKey我预计它不会评估最后的情况.有没有办法避免异常而不使用长if/else语句?

its*_*e86 5

您正在检查它是否包含密钥.您需要检查它是否包含密钥:

testExceptions[index].ContainsKey(y.Cell) && ... use the key ...
Run Code Online (Sandbox Code Playgroud)