我是C#的新手,对变量范围感到困惑。这是我编写的代码块,但是当我尝试访问try块外的a和b的值时,它给出了编译时错误
class TestConditionalStatements
{
static void Main(string[] args)
{
int a, b;
try
{
a = 10;
b = 20;
}
catch (Exception e)
{
Console.Write(e.Message);
}
//This line gives compile time error
ConditionalStatements c = new ConditionalStatements(a, b);
string result;
c.checkValidity(c, out result);
Console.WriteLine(result);
}
}
答案 0 :(得分:4)
b
和try
尚未初始化。代码路径存在于在a
块中分配异常并且编译器识别出异常之前可能发生异常的情况。将b
和try
设置为int a = 0, b = 0;
块之前的内容,例如a = 10;
,或重新思考你的逻辑。
答案 1 :(得分:4)
变量a和b可能未在该行初始化。 让我们说一个异常就行了:
int a = 0, b = 0;
try
{
a = 10;
b = 20;
}
catch (Exception e)
{
Console.Write(e.Message);
}
那么b的价值是多少? 您需要在try catch之前使用值初始化a和b:
int a , b ;
try
{
a = 10;
b = 20;
}
catch (Exception e) {
a = 0;
b = 0;
Console.Write(e.Message);
}
或在catch子句中给它们一个值:
xargs -n 1