我有一个小问题,我需要检查一个var是否在c#中定义。我不想检查它是否为空,因为那时我想做这个,它必须存在。c#可以检查一个var是否被定义?
例如我需要知道它的变种string foo
被定义为有像点儿:
isDefined("foo") :: bool
我有一个小问题,我需要检查一个var是否在c#中定义。我不想检查它是否为空,因为那时我想做这个,它必须存在。c#可以检查一个var是否被定义?
例如我需要知道它的变种string foo
被定义为有像点儿:
isDefined("foo") :: bool
正如你所知道的变量是string
,您可以使用String.IsNullOrEmpty(foo)
。这会返回一个bool
。
如果你不知道该变量是什么类型的,你可以使用:if (foo != null)
你不能在运行时的名字访问局部变量。要在运行时按名称访问成员,您可以使用反射和dynamic
。
你能在你打算如何使用这个解释一下?基于这个问题以及之前的一个问题,它看起来像来自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
。
也许你可以描述你真正的问题?为什么你想检查一个局部变量的存在? IMO没有任何意义。 – CodesInChaos 2011-05-05 09:56:53
你的意思是什么可能在语言中没有必要声明像JavaScript这样的每个变量? – 2011-05-05 10:10:21