Porque el uso de #IF
determinará si el código está compilado o no.
El uso de if
determinará si el código se ejecuta o no.
Parece que hay una PRUEBA de "entorno" definida en tiempo de compilación. Así que si existe ese ambiente, la
if (i % 2 == 0)
continue;
se pondrá a prueba y ejecutados: Sólo se imprimirán los números impares.
Lo importante es que el código compilado cambia según la existencia de TEST
. En un "entorno SIN PRUEBAS" el
if (i % 2 == 0)
continue;
ni siquiera existirá cuando se ejecute la aplicación.
¿Cuál es el propósito de usar #IF TEST en lugar de simplemente si (TEST)?
TEST
no es una variable, ni una constante. Ni siquiera existe en tiempo de ejecución. Es un indicador pasado al compilador para que pueda decidir compilar algún código (es decir, ponerlo en el ejecutable)
Quizás sería más claro si la directiva #if
tuviera algo más adentro. Permite modificar el fragmento a esto:
#if TEST
if (i == 5)
System.exit(1)//Not a c# programmer;
#endif
En este caso, en virtud de la existencia de TEST
, el programa solo bucle 5 veces. En cada iteración, i
se probará contra 5
. ¡¡¡Espera un minuto!!! ¡Ni siquiera compilará!
Si TEST
no está definido, la aplicación continuará hasta que se alcance otra condición de salida. No se realizará ninguna comparación de i
con 5
. Leer más en directivas here:
#if, junto con el #else, #elif, #endif, #define y directivas #undef, le permite incluir o excluir código basado en la existencia de una o más símbolos Esto puede ser útil al compilar el código para una compilación de depuración o al compilar para una configuración específica de .
Aquí hay una pregunta relacionada: http://stackoverflow.com/questions/15744/how-do-you-use-define –