2011-05-05 104 views
6

我有一个小问题,我需要检查一个var是否在c#中定义。我不想检查它是否为空,因为那时我想做这个,它必须存在。c#可以检查一个var是否被定义?

例如我需要知道它的变种string foo被定义为有像点儿:

isDefined("foo") :: bool 
+0

也许你可以描述你真正的问题?为什么你想检查一个局部变量的存在? IMO没有任何意义。 – CodesInChaos 2011-05-05 09:56:53

+0

你的意思是什么可能在语言中没有必要声明像JavaScript这样的每个变量? – 2011-05-05 10:10:21

回答

7

正如你所知道的变量是string,您可以使用String.IsNullOrEmpty(foo)。这会返回一个bool

如果你不知道该变量是什么类型的,你可以使用:if (foo != null)

1

你不能在运行时的名字访问局部变量。要在运行时按名称访问成员,您可以使用反射和dynamic

4

你能在你打算如何使用这个解释一下?基于这个问题以及之前的一个问题,它看起来像来自PHP背景。在C#中,没有未定义变量的概念。在代码中的任何一点,给定的变量都被声明或不被声明,你可以通过查看代码来确定它是否被声明。如果没有声明,编译器就不会让你使用变量(它不存在)。变量可能会被声明,但未被初始化;然而,编译器不会让你读取变量的值,除非确定该变量有一个值。例如:

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; 

如果你想跟踪的变量是否已被赋值(你不能使用null表示没有价值已分配),你需要跟踪的这与单独的bool变量开始为false,并且在您分配给其他变量时设置为true

相关问题