如何在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的值答案 0 :(得分:3)
您似乎宣布a
但未对其进行初始化。在C#
中,您应该在第一次使用之前将本地变量初始化为某些内容。如果您的if
语句评估为false
,那么a
将保持未初始化状态。即使它会评估true
,您也会尝试读取其值{{1}在初始化之前,它仍然是一个问题。要解决此问题,只需在声明:
x++
答案 1 :(得分:1)
在这种情况下,a
应在if
语句之外声明。 IE
int a = 1;
if(condition){
a=a++;
}
console.WriteLine("{0}",a);
但是,您的代码存在一些问题。最值得注意的是,你确定要做a=a++
吗?这段代码是多余的,你应该只做a++
。
我怀疑你的真正问题在于你所分享的代码之外。如果您发布更多代码,我可以优化我的答案,以帮助您更多。
答案 2 :(得分:0)
在您的新代码示例中,问题是您已声明变量a
,b
和c
但尚未初始化 。可能输入了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
未初始化的情况。
答案 3 :(得分:0)
你的问题根本不是c
;您的问题是a
和b
。您只需要更多地了解编译器的工作原理。
让我们这样说:你有......
int a, b, c;
在这里,您告诉编译器它将使用3个变量,最终将包含int
个值;但是现在他们什么都没有,他们已经空了(注意:不是0;空)或者在C#中已知,他们是null
。< / p>
当编译器到达此处时:
if (a > 3)
{
c = 20;
}
它说:&#34;哎呀!我需要检查a
是否小于3,但在此行a
之前从未分配过值,它是空的,我无法检查它。我最好抛出一个错误。&#34;
下一个条件也是如此。
如果像其他答案所说,在为条件赋值之前,编译器将能够比较和使用它们。
现在让我们来看看您的原始代码:
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);
时,它会说:&#34;嗯......我必须打印a
,但只有 {时才有值 {1}}是condition
,,但如果是,我就无法打印它,因为它是空的。现在比运行时更好地抛出错误!&#34;
如您所见,只有在您确定导致您的代码行的所有可能方式为该变量赋值后,才能使用您的变量。