Console.Writeline(result);最后返回错误CS0165 Use of unassigned local variable 'result'
,但我不知道为什么。我是一个完整的初学者,不胜感激。就像我在标题中说的那样,我正在尝试构建一个计算器。
char Operator;
double firstNumber;
double secondNumber;
Console.WriteLine("Enter the first number");
string firstNumberAsText = Console.ReadLine();
Console.WriteLine("Enter the second number");
string secondNumberAsText = Console.ReadLine();
Console.WriteLine(@"Enter a math operation. '+' for addition, '-' for subtraction, '*' for multiplication, '/' for division, '%' for remainder and '^' for power");
string mathOperator = Console.ReadLine();
firstNumber = Convert.ToDouble(firstNumberAsText);
secondNumber = Convert.ToDouble(secondNumberAsText);
Operator = Convert.ToChar(mathOperator);
double result;
switch (Operator)
{
case '+':
result = firstNumber + secondNumber;
break;
case '-':
result = firstNumber - secondNumber;
break;
case '*':
result = firstNumber * secondNumber;
break;
case '/':
result = firstNumber / secondNumber;
break;
case '%':
result = firstNumber % secondNumber;
break;
case '^':
result = Math.Pow(firstNumber, secondNumber);
break;
default:
Console.WriteLine("unrecognised operator: " + Operator);
break;
}
Console.WriteLine(result);
Console.ReadKey();
答案 0 :(得分:3)
错误本身会告诉您问题所在:
错误CS0165:使用未分配的本地变量“结果”
这意味着您正在尝试使用可能尚未初始化的变量。请注意,它在声明时并未初始化,并且在switch语句的default:
情况下也未分配值。
因此,有两种方法可以解决此问题:
1)声明变量时对其进行初始化
double result = 0;
2)或者,确保在使用每个可能的代码路径(包括默认开关大小写)之前为其分配一个值
default:
result = 0;
Console.WriteLine($"unrecognised operator: {Operator}");
break;
答案 1 :(得分:1)
对于无法识别的运算符,在尝试执行result
时Console.WriteLine()
变量将是未定义的。捕获默认行为时,您需要将其设置为一个值,或者在切换之前将其初始化。