如何在c#中的条件语句中获取该条件语句之外的值?

如何在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

如何在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 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#中所说的那样,它们是空的