为什么我不能在if语句中使用我的变量?

时间:2017-08-29 11:32:34

标签: c# .net winforms

我尝试将1添加到我的变量sum,但编译器说

  

变量sum未分配

在我的if语句中。我试过移动它,但不管我做什么,变量仍未分配。

static void Main()
{
    int sum;

    if(true)
    {
        sum += 1;
    }

    Console.Write(sum);
    Console.ReadKey();
}

如何更改我的代码来修复此错误并停止编译器抱怨?

4 个答案:

答案 0 :(得分:10)

变量sum必须具有初始值:

int sum = 0; //or any other value

代码

static void Main()
{
    int sum = 0;

    if(true)
    {
        sum += 1;
    }

    Console.Write(sum);
    Console.ReadKey();
}

想一想,在为sum分配值之前,没有定义的值,它是未定义的。

的结果是什么?
undefined + 1

是,编译器不能知道如此引发错误并停止编译。

答案 1 :(得分:2)

声明的变量之间存在差异("我声明 sum int 的类型>")它的值已定义(或者已分配)。

在评估之前,请确保已将值指定给他们

static void Main()
{
    // sum is declared as an int and an initial value of 0 is assigned to it
    int sum = 0;

    if(true)
    {
        sum += 1;
    }

    Console.Write(sum);
    Console.ReadKey();
}

答案 2 :(得分:1)

这是因为sum在for循环内初始化,并且是基于未给出的和的先前值。有两种方法可以解决问题。将sum变量初始化为零(int sum = 0)。或者在for循环之前初始化sum。 我认为第二个选项更有意义,因为你可能希望在for循环结束后获得累积结果。

答案 3 :(得分:0)

在使用任何局部变量之前,必须对其进行初始化或定义。 由于未定义sum,因此您收到此错误