繁体   English   中英

错误1非静态字段,方法或属性'temperature_conversion.Program.Celsius(int)'需要对象引用

[英]Error 1 An object reference is required for the non-static field, method, or property 'temperature_conversion.Program.Celsius(int)'

class Program
    {
        static void Main(string[] args)
        {
            int temp;
            string choice;
            int finalTemp;
            Console.WriteLine("Enter a temperature");
            temp = Convert.ToInt16(Console.ReadLine());

            Console.WriteLine("Convert to Celsius or Fahrenheit?" + "\n" +"Enter c or f");
            choice = Console.ReadLine();

            if (choice == "c")
            {
                Celsius(temp);
            }



            Console.ReadLine();//to keep open

        } //Main End

        public int Celsius(int t)
        {
            int c;
            c = 5 / 9 * (t - 32);
            return c;
        }
    }

我知道答案很简单,我似乎无法弄清楚自己做错了什么。

我正在尝试将温度传递给Celsius方法。

将您的方法标记为静态:

public static int Celsius(int t)

问题是Celsius方法不是像Main一样是Static的。

您可以解决这两种方法。

Celsius设为静态:

public static int Celsius(int t)

创建该Program的实例,然后调用Celsius

var program = new Program();   
program.Celsius(temp);

尝试使用Celcuis方法的static方法。 如果要与调用方方法调用同一类中的方法,并且要直接调用,则应在方法上使用static关键字。 像这样;

static public int Celsius(int t)
{
    int c;
    c = 5 / 9 * (t - 32);
    return c;
}

对于其他选项,您可以创建一个类实例,然后在if条件中调用您的方法。 像这样;

if ( choice == "c" )
{
   Program p = new Program();
   p.Celsius(temp);
}

一种可能是使Celsius方法成为static public static int Celsius(int t)
另一个方法是创建一个新的Program实例,并在其上调用Celsius

new Program().Celsius(temp);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM