C#未分配变量

本文关键字:变量 分配 | 更新日期: 2023-09-27 18:28:45

我是C#编程的新手,我不太了解它的语法或工作原理,但我一直在学习,它进展得很好。我正在尝试将我最近用Python编写的一个程序转换为C#,这样它就可以在windows上运行,而无需安装Python。在转换过程中,我不得不改变很多方法,这花了很长时间,但我一直在努力解决大多数问题。然而,这个问题对我来说毫无意义。我已经为双"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赋值以便使用它吗?提前感谢!

C#未分配变量

在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);