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

本文关键字:条件 语句 获取 | 更新日期: 2023-09-27 18:37:21

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

*更新据说我的代码是正确的,我已声明 a;我想在条件语句之外使用值。*更新我想知道的只是在条件之外获取 C 的值

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

您似乎声明了a但没有初始化它。在C#中,您应该在第一次使用之前将局部变量初始化为某些内容。如果 if 语句的计算结果为 falsea将保持未初始化状态。即使它会评估true您正在尝试在初始化它之前读取其值(以x++为单位),因此它仍然是一个问题。要解决此问题,只需在声明时用默认值初始化它:

int a = 0;

在这种情况下,a应该在 if 语句之外声明。IE

int a = 1;
if(condition){
  a=a++;
}
console.WriteLine("{0}",a);

但是,您的代码存在几个问题。最值得注意的是,你确定要做a=a++吗?这段代码是多余的,你应该只做a++

我怀疑您的真正问题在您共享的代码之外。如果您发布更多代码,我可以完善我的答案以为您提供更多帮助。

在新代码示例中,问题在于您已经声明了变量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未初始化的情况。

你的问题根本不c;你的问题是ab。您只需要更多地了解编译器的工作原理。

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

int a, b, c;

在这里,你告诉编译器它将使用 3 个变量,最终在某个地方将包含int值;但现在它们不是什么都没有,它们是空的(注意:不是 0;空)或者正如 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时才有一个值,但如果它是假的,我将无法打印它,因为它将是空的。现在抛出错误比跑步时更好!

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