c#可以检查是否定义了变量

本文关键字:定义 变量 是否 检查 | 更新日期: 2023-09-27 17:54:45

我有一个问题:我需要检查一个变量是否在c#中定义。我不想检查它是否为空因为我想让它必须存在

。我需要知道变量string foo是否被定义。有没有像

isDefined("foo") :: bool

c#可以检查是否定义了变量

由于您知道变量是string,您可以使用String.IsNullOrEmpty(foo)。这返回一个bool

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

您能详细说明您打算如何使用它吗?根据这个问题和你之前的一个问题,看起来你来自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

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

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

TextBox tx = null; 

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

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

虽然这是很古老的,但我面临着同样的需求。在做了一些研究之后,我了解到,要么是我们对这个问题的定义不清楚,要么是这个案例没有太多的支持。在我的代码中,我用try/catch块做了一个解决方法,假设如果变量没有在我的类中定义,那么在我试图访问它的那一刻,它会抛出异常。如果出现异常,则在catch部分处理流。

CustomLabel是在循环中被解析的对象中的一个变量。为了简单起见,请假设下面的示例只包含主要焦点。

的例子:

//startingDate
                    try
                    {
                        startYear = DateTime.Parse(string.IsNullOrEmpty(relationshipDetail.startingDate) ? "" : relationshipDetail.startingDate).Year;
                    }
                    catch (Exception statYeareX)
                    {
                        Console.WriteLine(statYeareX.Message.ToString());
                        //when is issing a starting year
                        startYear = 0;
                    }

之前只有this.startYear = DateTime.Parse(string.IsNullOrEmpty(relationshipDetail.startingDate) ? "" : relationshipDetail.startingDate).Year;,它在QA和初始测试下工作得很好,因为变量是定义的,但没有初始化,因此没有赋值。当它进入生产环境并解析JSON ->对象开始发生,我们看到有null引用异常由于变量在初始JSON中根本不存在。

你可以使用这个方法:

    if (String.IsNullOrWhiteSpace(foo) || String.IsNullOrEmpty(foo)) {
         Console.WriteLine("Empty")
    }

String. isnullorwhitespace (String)检查字符串是否为空或由空格组成

String. isnullorempty (String)检查字符串是空还是空