No me gusta esto ... ¿Es esto engañar al idioma?

He visto algo como lo siguiente un par de veces ... y lo odio. ¿Es esto básicamente "engañar" al lenguaje? O ... ¿consideraría que esto está 'bien' porque el IsNullOrEmpty se evalúa primero, todo el tiempo?

(Podríamos discutir si una cadena debe ser NULL o no cuando sale de una función, pero esa no es realmente la pregunta).

string someString;
someString = MagicFunction();

if (!string.IsNullOrEmpty(someString) && someString.Length > 3)
{
    // normal string, do whatever
}
else
{
   // On a NULL string, it drops to here, because first evaluation of IsNullOrEmpty fails
   // However, the Length function, if used by itself, would throw an exception.
}

EDITAR Gracias de nuevo a todos por recordarme este lenguaje fundamental. Si bien sabía "por qué" funcionó, no puedo creer que no supiera / recordara el nombre del concepto.

(En caso de que alguien quiera algún fondo ... Encontré esto al solucionar problemas de excepciones generadas por cadenas NULL y .Length> x excepciones ... en diferentes lugares del código. Entonces, cuando vi el código anterior, además de todo lo demás , mi frustración se hizo cargo de allí.)

Respuestas a la pregunta(30)

Su respuesta a la pregunta