C# 如何在主程序中正确调用此方法?

C# 如何在主程序中正确调用此方法?,c#,C#,这是一个BMI计算器,根据用户选择的选项计算英制或公制BMI。然后我需要显示他们的体重指数状态——体重不足、超重、肥胖。我想在主方法中调用Person类中的一个方法,但VisualStudio在bmi变量下面加了下划线,并表示使用未分配的局部变量 如何解决变量问题 以下是课程代码: class Person { double Height { get; set; } double Weight { get; set; } double Inches { get; set;

这是一个BMI计算器,根据用户选择的选项计算英制或公制BMI。然后我需要显示他们的体重指数状态——体重不足、超重、肥胖。我想在主方法中调用Person类中的一个方法,但VisualStudio在bmi变量下面加了下划线,并表示使用未分配的局部变量

如何解决变量问题

以下是课程代码:

class Person
{
    double Height { get; set; }
    double Weight { get; set; }
    double Inches { get; set; }
    double Bmi { get; set; }

    public Person()
    {

    }

    public Person(double height, double weight, double bmi)
    {
        Height = height;
        Weight = weight;
        Bmi = bmi;
    }

    public Person (double height, double weight, double inches, double bmi)
    {
        Height = height;
        Weight = weight;
        Inches = inches;
        Bmi = bmi;
    }


    //calculates BMI using metric formula 
    public static double CalcMetric(double height, double weight)
    {
        double bmi = weight / Math.Pow(height, 2);
        return bmi;
    }

    //calculates BMI using imperial formula
    public static double CalcImperial(double height, double weight)
    {
        double bmi = weight / Math.Pow(height, 2) * 703;
        return bmi;
    }

    public void Status(double bmi)
    {
        if (bmi < 18.5)
        {
            Console.WriteLine("Your BMI status is underweight.");
        }
        else
          if (bmi < 24.9)
        {
            Console.WriteLine("Your BMI status is normal.");
        }
        else
          if (bmi < 29.9)
        {
            Console.WriteLine("Your BMI status is overweight.");
        }
        else
          if (bmi > 30)
        {
            Console.WriteLine("Your BMI status is obese.");
        }
    }

}
}

因为双倍的bmi,你得到了错误;未初始化。根据指导原则,方法成员需要在方法中初始化,您不能仅仅声明它。所以你需要这样做

double bmi=0;
选中此项:

您的代码中还有一个问题

//in your person class
public void Status(double bmi)
{
}
您正在进行p.Statusref bmi;,您不会得到更新的值,因为函数中的double值类型更改不会反映实际值,您需要这样做

//in your person class
public void Status(ref double bmi)
{
}
在ref的帮助下,您将从functio获得值

更好的解决方案是从函数返回值

//in your person class
public double Status()
{
     double bmi=0;
    //rest of code 
    return bmi;
}

主要bmi=p.状态

默认情况下,Bmi是person类的内部成员,因此您不能直接使用Bmi而使用

Status(CalcMetric); or `status(CalcImperial);` *according to your requirement*

因此,这些函数在函数调用期间返回BMI的值。

您可以简单地删除双BMI的变量声明;不相关:选择双倍?我觉得很奇怪。不想用十进制或浮点数。整数怎么样?你没有选择1.5,是吗?为什么我要使用int,我没有使用整数现在我不能让BMI的值从零变为零,你是怎么尝试的?问题的片段中肯定没有@马里亚姆。提示:应该有bmi=Person.CalcMetric |英制h,w;某处…@MariahM检查我的更新,您必须使用ref或函数返回值,尝试使用p.Statusbmi调用它;这听起来像是我要放在二传中的东西。将try@MariahM. - 你只需要做一次更新,如p.Statusref bmi;在方法中,您还需要更新中给出的ref
Status(CalcMetric); or `status(CalcImperial);` *according to your requirement*