Quando si confronta con un numero minimo o massimo di due numeri/funzioni, C# si interrompe se il caso è vero per il primo e implicherebbe la verità per il secondo? Esempi specifici di questi casi sonoFa il confronto con Math.Min o Math.Max cortocircuito?
if(x < Math.Max(y, z()))
e
if(x > Math.Min(y, z()))
Da Math.Max(y, z())
restituirà un valore almeno grande come y, se x < y allora non c'è necessità di valutare z(), che potrebbe volerci un po '. Situazione simile con Math.Min
.
mi rendo conto che questi potrebbero entrambi essere riscritte lungo le linee di
if(x < y || x < z())
per corto-circuito, ma che sia più chiaro quale sia il confronto è senza dover riscrivere. Questo cortocircuito?
Si supponga di chiamare 'if (x> XYZ (y, z()))' Come può il compilatore conoscere il risultato di XYZ? Max, Min, Media o qualcos'altro? –
@ L.B Ottimo punto, non l'avevo considerato in questo modo. – yoozer8
Inoltre, l'espressione "cortocircuito" potrebbe non essere equivalente, a seconda di come 'Min' e' Max' gestiscono NaN. – dan04