C#外部try块的变量范围

时间:2018-01-18 18:15:26

标签: c# scope

我是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);


    }
}

2 个答案:

答案 0 :(得分:4)

btry尚未初始化。代码路径存在于在a块中分配异常并且编译器识别出异常之前可能发生异常的情况。将btry设置为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