为什么逻辑评估不会在 fist "false" 结果上停止?
Why logical evaluation is not stopped on fist "false" result?
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();
当 testExceptions
不包含键 y.Cell
时,!testExceptions[index][y.Cell].Contains(y.ID)
给我一个例外。但是因为我正在检查 ContainsKey
我预计它不会评估最后一个条件。有没有什么方法可以在不使用长 if/else
语句的情况下避免异常?
您正在检查它是否不包含密钥。您需要检查它是否 包含密钥:
testExceptions[index].ContainsKey(y.Cell) && ... use the key ...
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();
当 testExceptions
不包含键 y.Cell
时,!testExceptions[index][y.Cell].Contains(y.ID)
给我一个例外。但是因为我正在检查 ContainsKey
我预计它不会评估最后一个条件。有没有什么方法可以在不使用长 if/else
语句的情况下避免异常?
您正在检查它是否不包含密钥。您需要检查它是否 包含密钥:
testExceptions[index].ContainsKey(y.Cell) && ... use the key ...