编译器错误CS0120

时间:2013-10-19 20:18:09

标签: c# class

我正在尝试理解概念“类”并编写一些简单的程序。但是我的函数Check()不正确。请跟我到右边..

namespace ConsoleApplication2
{
    public class Task
    {
        public string RusVer { get; set; } 
        public string Key { get; set; } 
        public string UserVer { get; set; }


        public void Check()
        {
            if (UserVer == Key)
                Console.WriteLine("Good");            
        }
    }

class Program
{
    static void Main(string[] args)
    {

        Task p1 = new Task();
        p1.RusVer = "Привет, Мир!";
        p1.Key = "Hello, World!";
        Console.WriteLine(p1.RusVer);
        Console.WriteLine("Translate it: ");
        p1.UserVer = Convert.ToString(Console.ReadLine());
        Console.WriteLine(p1.UserVer);

        Task.Check(); //errorCS0120

    }
}
}

2 个答案:

答案 0 :(得分:3)

您正在调用Check,就像它是静态方法一样。它是实例方法,所以它应该调用p1.Check()

答案 1 :(得分:2)

  

Compiler Error CS0120:非静态字段,方法或属性“成员”需要对象引用

因此,为了使用非静态字段,方法或属性,必须首先创建类的对象实例

您需要在Task类对象

的帮助下调用它
p1.Check();

如果您将Check()方法声明为静态,则可以按照当前的方式调用它。

 public static void Check()
 {
    if (UserVer == Key)
        Console.WriteLine("Good");            
 }