我只是想知道为什么编译器会给我这个错误。每次调用函数时都会执行 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;
}
}
}
将 return intRes 放在 try 块中可以让我摆脱该错误,但随后会出现一个错误,指出并非所有代码路径都返回一个值。我理解错误,但我仍然不明白为什么它不允许我编译,try 块每次都会执行对吗?
我也知道将 0 分配给 intRes 将消除该错误。
问候,