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

时间:2015-01-13 21:15:03

标签: c# conditional

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

4 个答案:

答案 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)

在您的新代码示例中,问题是您已声明变量abc但尚未初始化 。可能输入了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

请注意,abc的默认值为0,因此如果未输入if语句,它们仍将是分配了一个可用的值。

此外,如果a = 0b = 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;您的问题是ab。您只需要更多地了解编译器的工作原理。

让我们这样说:你有......

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;

如您所见,只有在您确定导致您的代码行的所有可能方式为该变量赋值后,才能使用您的变量。