Я обнаружил очень странное поведение для следующего кода:
public double ReturnBehavior(List<double> ptList)
{
return ptList.Count==0? 0:ptList[0];
}
Я думал, что это должно быть эквивалентно
public double ReturnBehavior(List<double> ptList)
{
if(ptList.Count==0)
return 0;
return ptList[0];
}
Но это не так, потому что первый метод будет одновременно оценивать условия true
и false
. Таким образом, это означает, что первый метод попытается исключить IndexOutOfRange
, если ptList.Count==0
.
Я что-то здесь упускаю? Или это баг в 2008 году?