C#未分配的变量?

时间:2014-11-02 19:19:29

标签: c# console-application

我是C#编程的新手,我不太了解它的语法或它是如何工作的,但我一直在学习它并且它已经很好地进行了。我正在尝试将我最近用Python编写的一个程序转换为C#,这样它就可以在Windows上运行而无需安装Python。而且我不得不改变我的很多方法来转换它,这需要花很长时间才能完成,但是随着时间的推移,我一直在想出大部分的事情。然而,这个问题对我来说完全没有意义。我为double'b1'分配了一个值和一个类型,但是它告诉我在b2的定义中我不能使用它?

            double b;
            double b1;
            double b2;
            if (noSlope == true)
                b = 0;
            else
                b1 = slopem * Convert.ToDouble(x1);
                b2 = Convert.ToDouble(y1) - b1;
                b = b2;

Visual Studio一直在告诉我'b1'是一个未分配的局部变量。我以为我只是在上面的线上分配了它?任何人都可以告诉我它为什么这样做,或者如何为b1赋值以便可以使用它?提前谢谢!

1 个答案:

答案 0 :(得分:9)

在c#块中使用{}标记,而不是缩进。您当前的代码等同于

double b;
double b1;
double b2;
if (noSlope == true)
{
    b = 0;
}
else
{
    b1 = slopem * Convert.ToDouble(x1);
}
b2 = Convert.ToDouble(y1) - b1;
b = b2;

如您所见,当条件评估为true时,您将无法分配b1

PS。您可以将代码重写为

double b;
if (noSlope == true)
{
    b = 0;
}
else
{
    b = Convert.ToDouble(y1) - slopem * Convert.ToDouble(x1);
}

甚至

double b = noSlope ? 0 : Convert.ToDouble(y1) - slopem * Convert.ToDouble(x1);