c#可以检查是否定义了变量
本文关键字:定义 变量 是否 检查 | 更新日期: 2023-09-27 17:54:45
我有一个问题:我需要检查一个变量是否在c#中定义。我不想检查它是否为空因为我想让它必须存在
。我需要知道变量string foo
是否被定义。有没有像
isDefined("foo") :: bool
由于您知道变量是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)检查字符串是空还是空