2014-02-16 29 views
0
namespace ConsoleApplication18 
{ 
    class Program 
    { 
     class MyClass 
     { 
      public int age; 
      public string name; 

      public static MyClass createobj() { 

       MyClass returnit = new MyClass(); 
       returnit.age = 45; 
       returnit.name = "Homer Simpson"; 
       return returnit; 

      } 
     } 

     static void Main(string[] args) 
     {   
      MyClass homer = createobj(); 

      Console.WriteLine(homer.age); 
     } 
    } 
} 

這是錯誤消息:爲什麼此代碼不能在類中使用靜態方法?

The name 'createobj' does not exist in the current context

爲什麼我收到此錯誤消息,即使我做了CREATEOBJ()方法靜態? 我試過MyClass homer = MyClass.createobj();,它沒有返回任何錯誤,程序運行良好?爲什麼不能使用MyClass homer = createobj();

+1

因爲你不是在那個班上。 – SLaks

+0

我不明白。 – user3292196

回答

3

您在MyClass類中定義了函數createobj()。然而,Main()不屬於該類別,而是屬於該程序。爲了調用靜態方法,你需要說明它屬於哪個類,所以調用應該是MyClass homer = MyClass.createobj()。話雖這麼說,這可能會在這個簡單的情況下,可以很容易地與類的構造函數中完成,那就是:

MyClass homer = new MyClass() 

然後你定義MyClass類中的構造函數:

class MyClass 
{ 
    //... 
    public MyClass() 
    { 
    age = 45; 
    name = "Homer"; 
    } 
} 
2

CreateObj是MyClass上的一種方法。

您的主要方法在MyClass之外。

因此,您必須使用MyClass.CreateObj();

相關問題