[英]How to get value in conditional statement in c# outside of that conditional statement?
如何在c#中的条件语句中获取值(例如if语句中的示例,并且您希望if语句中的值在它外部使用)如何?
例
int a, b, c;
if (a > 3)
{
c = 20;
}
else if (b < 3)
{
c = 10;
}
//how do i get the value of c outside the conditional statement??
Console.WriteLine("{0}", c);
//it always says local variable unassigned local variable
*更新据说我的代码是正确的,并且我已经声明了; 我想使用条件语句之外的值。 *更新所有我想知道的就是获取条件之外的c值
似乎您声明a
但没有初始化它。在C#
您应该在首次使用之前将局部变量初始化为某种东西。 如果if
语句的计算结果为false
则a
仍将保持未初始化状态,即使它评估为true
您也要尝试在初始化之前读取它的值(在x++
),因此仍然是一个问题。 要解决此问题,只需在声明时使用默认值对其进行初始化:
int a = 0;
在这种情况下a
应在if
语句之外声明a。 IE
int a = 1;
if(condition){
a=a++;
}
console.WriteLine("{0}",a);
但是,您的代码有几个问题。 最值得注意的是,您确定要执行a=a++
吗? 这段代码是多余的,您应该只做a++
。
我怀疑您的真正问题出在共享代码之外。 如果您发布更多代码,我可以优化答案以帮助您更多。
在新的代码示例中,问题在于您已经声明了变量a
, b
和c
但尚未对其进行初始化 。 可能会输入if语句,但可能不会输入if语句,因此可能不会执行if语句内部完成的所有赋值。
在使用它们之前,您需要告诉编译器a,b和c的初始值是什么,我认为这里几乎每个人都已经说过。 尝试将代码更改为此:
int a = 0, b = 0, c = 0;
if (a > 3)
{
c = 20;
}
else if (b < 3)
{
c = 10;
}
//This should print out 10
Console.WriteLine("{0}", c);
//no more compile errors will occur
注意, a
, b
和c
默认值均为0
因此,如果未输入if语句,它们仍将被分配一个可用值。
同样,如果a = 0
和b = 4
则整个if块都将被跳过,而c
保持不变,这是将其默认值0
打印到控制台的地方。
以下是我认为不是最好的选择的另一种方法:
int a = 0, b = 0, c;
if (a > 3)
{
c = 20;
}
else if (b < 3)
{
c = 10;
}
else
{
c = 1;
}
Console.WriteLine("{0}", c);
即使您没有初始化c
变量,它也会编译,因为在某种程度上您是这样。 最后, else
将变量分配为1,因此不会出现未初始化c
情况。
你的问题根本不是c
; 您的问题是a
和b
。 您只需要更多地了解编译器是如何工作的即可。
让我们这样说:你有...
int a, b, c;
在这里,您告诉编译器它将使用3个变量,这些变量最终将在某个位置包含int
值; 但是现在它们什么也没有,它们为空(注意: 不是0; empty ),或者在C#中为null
。
当编译器到达此处时:
if (a > 3)
{
c = 20;
}
它说:“哇!我需要检查a
是否小于3,但是在此行a
从未分配值之前,它是空的,我不能那样检查它。我最好抛出一个错误。”
下一个条件也会发生同样的情况。
就像其他答案所说的那样,如果在给条件分配值之前,编译器将能够比较和使用它们。
现在,让我们看一下您的原始代码:
int a;
//I'll asume you declared a the same way that the other code
if (condition)//this is true
{
a = a++;
}
//how do i get the value of a?
Console.WriteLine("{0}", a);
//it always says local variable unassigned local variable
当编译器到达Console.WriteLine("{0}", a);
,它说:“嗯...我必须打印a
,但是只有当 condition
为true
它才有一个值, 但是如果为false ,我将无法打印它,因为它将为空。最好抛出现在比运行时出错!”
如您所见,仅在确定导致代码行的所有可能方式为该变量分配值之后,才使用变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.