我有一个小问题,我需要检查是否在c#中定义了var。我不想检查它是否为空,因为我想要做到这一点,它必须存在。
e.g。我需要知道var string foo
的定义是否有:
isDefined("foo") :: bool
答案 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();
注意:当您递归调用该方法时,这非常有用。