我只是想知道爲什麼編譯器會給我這個錯誤。每次調用函數時都會執行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爲什麼?會做的更好嗎? –