2011-05-05 10 views
6

tengo una pequeña pregunta, necesito verificar si una var está definida en C#. No quiero comprobar si es nulo porque entonces quiero hacer esto, debe existir.C# posible para verificar si se define una var?

p. Ej. Necesito saber que la var string foo se define no es anyting como:

isDefined("foo") :: bool 
+0

¿Tal vez podría describir su problema real? ¿Por qué quieres verificar la existencia de una variable local? No tiene ningún sentido en absoluto IMO. – CodesInChaos

+0

¿Quiere decir algo que es posible en un idioma sin la necesidad de declarar todas las variables como JavaScript? –

Respuesta

7

Como saben la variable es una string, podría utilizar String.IsNullOrEmpty(foo). Esto devuelve un bool.

Si no está seguro de qué tipo es la variable, que puede usar: if (foo != null)

1

No se puede acceder a las variables locales por su nombre en tiempo de ejecución. Para acceder a los miembros por nombre en tiempo de ejecución, puede usar reflection y dynamic.

4

puedes contar de cómo se va a usar esto? Según esta pregunta y una de sus preguntas anteriores, parece que proviene de un fondo de PHP. En C#, no hay ninguna noción de una variable indefinida. En cualquier punto del código, una variable dada es declarada o no, y usted puede determinar si se declara o no simplemente mirando el código. Si no se declara, el compilador no le permitirá usar la variable (no existe). Una variable puede ser declarada, pero no inicializada; sin embargo, el compilador no le permitirá leer el valor de la variable a menos que sea seguro que la variable tenga un valor. Por ejemplo:

int foo; // Declared, but uninitialized 
if (bar == 42) 
    foo = 3; // Initialize foo 
// At this point, foo may or may not be initialized. 
// Since we cannot be sure that it is initialized, 
// the next line will not compile. 
x = foo; 

Si desea realizar un seguimiento de si es o no una variable se le ha asignado un valor (y no se puede utilizar null para indicar que ningún valor se ha asignado), es necesario hacer un seguimiento de esta con una variable bool separada que comienza como false y se establece en true cuando se asigna a la otra variable.

Cuestiones relacionadas