如何在c#中的条件语句中获取该条件语句之外的值?
如何在c#中的条件语句中获取值(例如在if语句中,您希望在if语句之外使用if语句中的值)如何获取 范例如何在c#中的条件语句中获取该条件语句之外的值?,c#,conditional,C#,Conditional,如何在c#中的条件语句中获取值(例如在if语句中,您希望在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 loc
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
inta、b、c;
如果(a>3)
{
c=20;
}
否则如果(b<3)
{
c=10;
}
//如何在条件语句之外获得c的值??
Console.WriteLine(“{0}”,c);
//它总是说局部变量未分配局部变量
*更新假设我的代码是正确的,我
我宣布;我想在条件语句外使用a的值。
*update我想知道的就是在条件之外获取c的值,在这种情况下,
a
应该在if
语句之外声明。即
int a = 1;
if(condition){
a=a++;
}
console.WriteLine("{0}",a);
但是,您的代码有几个问题。最值得注意的是,您确定要执行a=a++
?此代码是多余的,您应该只执行a++
我怀疑你真正的问题不在你共享的代码范围之内。如果你发布更多的代码,我可以改进我的答案来帮助你。在这种情况下,
a
应该在If
语句之外声明。即
int a = 1;
if(condition){
a=a++;
}
console.WriteLine("{0}",a);
但是,您的代码有几个问题。最值得注意的是,您确定要执行a=a++
?此代码是多余的,您应该只执行a++
我怀疑你真正的问题不在你共享的代码范围之内。如果你发布更多的代码,我可以改进我的答案来帮助你。看起来你声明了
a
,但没有初始化它。在C
中,你应该在第一次使用前将局部变量初始化为某个值。如果您的If
语句的计算结果为false
,则a
将保持未初始化状态。即使它的计算结果为true
,您仍在尝试在初始化它之前读取它的值(在x++
),因此它仍然是一个问题。要修复此问题,请在声明时使用默认值初始化它:
int a = 0;
似乎您声明了
a
,但没有初始化它。在C
中,您应该在首次使用前将局部变量初始化为某个值。如果您的If
语句的计算结果为false
,则a
将保持未初始化状态。即使它的计算结果为true
,您仍在尝试在初始化它之前读取它的值(在x++
),因此它仍然是一个问题。要修复此问题,请在声明时使用默认值初始化它:
int a = 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
即使您没有初始化
c
变量,这也会编译,因为您是以一种循环的方式;在最后的else
中,变量被指定为1,因此如果c
未初始化,则不会出现任何情况。在新的代码示例中,问题是您已声明变量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
即使您没有初始化
c
变量,这也会编译,因为您是以一种循环的方式;在最后的else
中,变量被指定为1,因此如果c
未初始化,则不会出现任何情况。您的问题根本不是c
;您的问题是a
和b
。您只需要进一步了解编译器的工作原理
让我们这样说吧:你有
int a, b, c;
在这里,您告诉编译器它将使用3个变量,这些变量最终将包含int
值;但是现在它们什么都没有了,它们是空的(注意:不是0;空的),或者像在C#中所知道的那样,它们是空的
当编译器到达此处时:
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
,但只有当条件
为true
,但如果为false,我将无法打印,因为它将为空。现在抛出错误比运行时更好!”
正如您所看到的,只有在您确定所有可能导致您的代码行的方法都为该变量赋值后,才可以使用变量。您的问题根本不是c
;您的问题是a
和b
。您只需要进一步了解编译器的工作原理
让我们这样说吧:你有
int a, b, c;
在这里,您告诉编译器它将使用3个变量,这些变量最终将包含int
值;但是现在它们什么都没有了,它们是空的(注意:不是0;空的),或者像C#中所说的那样,它们是空的