なぜコンパイラがこのエラーを出すのか疑問に思っています。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ブロックが毎回実行されます。
また、intResに0を割り当てると、そのエラーが解消されることも知っています。
よろしく、