2014-02-16 25 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();

相关问题