2013-10-19 79 views
0

我試圖理解「類」的概念,並編寫一些簡單的程序。但是我的函數Check()不正確。請按照我的權利..編譯器錯誤CS0120

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 

    } 
} 
} 

回答

3

你打電話Check就好像它是靜態方法。它是實例方法,所以它應該叫做p1.Check()

+0

然後p1 - 是一個實例方法嗎?如果我寫公共靜態無效檢查()我必須調用Task.Check()? – Eluvium

+0

檢查是一個實例方法(在一個類型的實例上調用的方法)。 p1是一個實例。 – empi

+0

我明白了!非常感謝! – Eluvium

2

Compiler Error CS0120:一個對象引用是所必需的非靜態字段,方法或屬性「構件」

所以爲了使用非靜態字段,方法或屬性,必須先創建一個類的對象實例

您需要Task類對象的幫助來調用它

p1.Check(); 

如果您將Check()方法聲明爲static,那麼您可以按照當前的方式調用它。

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