c#可以检查是否定义了var?

时间:2011-05-05 09:52:31

标签: c#

我有一个小问题,我需要检查是否在c#中定义了var。我不想检查它是否为空,因为我想要做到这一点,它必须存在。

e.g。我需要知道var string foo的定义是否有:

isDefined("foo") :: bool

5 个答案:

答案 0 :(得分:9)

如您所知,变量为string,您可以使用String.IsNullOrEmpty(foo)。这会返回bool

如果您不确定变量的类型,可以使用:if (foo != null)

答案 1 :(得分: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

答案 2 :(得分:1)

您无法在运行时按名称访问本地变量。要在运行时按名称访问成员,您可以使用反射和dynamic

答案 3 :(得分:1)

答案 4 :(得分:1)

首先,用null值声明对象 例如:

TextBox tx = null; 

然后在相同的上下文中,您可以检查对象是否为null来分配其类型。示例:

if(tx ==null) tx = new TextBox(); 

注意:当您递归调用该方法时,这非常有用。