При сравнении с минимумом или максимумом двух чисел/функций, является ли короткое замыкание на C#, если случай истинен для первого и будет означать истину для второго? Конкретные примеры этих случаевПо сравнению с Math.Min или Math.Max короткое замыкание?
if(x < Math.Max(y, z()))
и
if(x > Math.Min(y, z()))
Так как Math.Max(y, z())
возвратит значение по крайней мере, столь же большой, как у, если х < у, то нет никакой необходимости, чтобы оценить г(), который может занять некоторое время. Аналогичная ситуация с Math.Min
.
Я понимаю, что они оба могли быть переписаны по линии
if(x < y || x < z())
с целью короткое замыкание, но я думаю, что это более ясно, что сравнение без перезаписи. Это короткое замыкание?
Предположим, что вы вызываете 'if (x> XYZ (y, z()))' Как компилятор может узнать результат XYZ? Макс, Мин, Среднее или что-нибудь еще? –
@ L.B Отличный момент, я так не думал об этом. – yoozer8
Кроме того, выражение «короткое замыкание» может быть не эквивалентным, в зависимости от того, как «Мин» и «Макс» обрабатывают NaN. – dan04