为什么这个C#代码踢出一个错误?
问题描述:
真正的新手问题,但为什么这不工作?我越来越为什么这个C#代码踢出一个错误?
使用未赋值的变量 “比较”
为错误
string comparison;
Console.WriteLine("Enter the first number");
int firstNum = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter the second number");
int secondNum = Convert.ToInt32(Console.ReadLine());
if (firstNum == secondNum)
comparison = "equals to";
if (firstNum < secondNum)
comparison = "less than";
if (firstNum > secondNum)
comparison = "greater than";
Console.WriteLine("{0}",comparison);
答
这几乎是自解释 - 比较不能保证被赋值(有一个值),并且编译器因此引发错误。
基本上你的if语句可能永远不会将值设置为'比较',这就是它失败的原因。
一个快速和肮脏的方式圆这将是声明的方式比较相似,这
string comparison = "unassigned";
或
string comparison = String.Empty;
答
因为编译器不知道comparison
是一个可执行文件的路径。改变了三种ifs
到IF-THEN-别人的:
if (firstNum == secondNum)
comparison = "equals to";
else if (firstNum < secondNum)
comparison = "less than";
else
comparison = "greater than";
,也将努力
答
您可以设置比较的String.Empty以及在声明它...
答
这里的基本问题是,编译器不会检查这样的一系列条件来查看它们的组合,它们涵盖所有可能的选项。条件中的任何东西都被认为是可以执行的,那就是,它从来不会看大局。
正如杰西所说,如果其他东西只有一个,那么编译器可以看到没有其他路径。无论如何,它的效率稍高一点,因为你的代码总是执行所有三个测试,而他的执行最多只有两个测试。
对于任何人谁通过Wrox的有2001起C#中,你可以看到因此,在某种程度上第66页 – super9 2010-12-15 23:34:08