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();
?
答案 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();