如何在该条件语句之外的 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 的值
您似乎声明了a
但没有初始化它。在C#
中,您应该在第一次使用之前将局部变量初始化为某些内容。如果 if
语句的计算结果为 false
则a
将保持未初始化状态。即使它会评估true
您正在尝试在初始化它之前读取其值(以x++
为单位),因此它仍然是一个问题。要解决此问题,只需在声明时用默认值初始化它:
int a = 0;
在这种情况下,a
应该在 if
语句之外声明。IE
int a = 1;
if(condition){
a=a++;
}
console.WriteLine("{0}",a);
但是,您的代码存在几个问题。最值得注意的是,你确定要做a=a++
吗?这段代码是多余的,你应该只做a++
。
我怀疑您的真正问题在您共享的代码之外。如果您发布更多代码,我可以完善我的答案以为您提供更多帮助。
在新代码示例中,问题在于您已经声明了变量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
未初始化的情况。
你的问题根本不c
;你的问题是a
和b
。您只需要更多地了解编译器的工作原理。
让我们这样说吧:你有...
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
时才有一个值,但如果它是假的,我将无法打印它,因为它将是空的。现在抛出错误比跑步时更好!
如您所见,只有在您确定导致代码行的所有可能方式都为该变量分配值之后,才使用变量。