我只是想知道为什么编译器会给我这个错误。每次调用函数时都会执行try块,这意味着该变量将被分配。但它仍然不让我编译。使用未分配的本地变量错误的原因
using System;
namespace Checking
{
class Program
{
static void Main(string[] args)
{
int intNum;
intNum = readValue("Please enter a number: ");
}
static int readValue(string strPrompt)
{
int intRes;
Console.WriteLine(strPrompt);
try
{
intRes = Convert.ToInt32(Console.ReadLine()); // Gets assigned here! But still doesnt allow me to compile!
}
catch (Exception ex)
{
Console.WriteLine("Please enter a numeric value.\n");
readValue(strPrompt);
}
return intRes;
}
}
}
把回报intRes try块内可以让我摆脱错误的,但随后的错误影响了说不是所有的代码路径返回一个值。我理解错误,但我仍然不明白为什么它不允许我编译,try块每次都被执行正确吗?
我也知道给intRes指定0会摆脱那个错误。
问候,
这解决了我的问题并回答了我的问题。 –
@AbijeetPatro - 是的,这是直接的答案。但递归ReadValue()不是一个好主意。 –
@HenkHolterman为什么?会做的更好吗? –