为什么这段代码不能在类中使用静态方法?

时间:2014-02-16 03:04:00

标签: c# .net visual-studio-2012

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();

2 个答案:

答案 0 :(得分:3)

您在createobj()类中定义了函数MyClass。但是,Main()不属于该课程,而属于该课程。为了调用静态方法,您需要说明它属于哪个类,因此调用应该是MyClass homer = MyClass.createobj()。话虽如此,在这个简单的情况下,这可以像使用类的构造函数一样轻松完成,即:

MyClass homer = new MyClass()

然后在MyClass类中将构造函数定义为:

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

答案 1 :(得分:2)

CreateObj是MyClass上的一个方法。

您的主要方法在MyClass之外。

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