使用控制台应用程序调用非静态类

Fre*_*ddy 6 c# static console-application

我正在尝试使用控制台应用程序从另一个类调用方法.我尝试调用的类不是静态的.

class Program
{
    static void Main(string[] args)
    {
        Program p = new Program();
        var myString = p.NonStaticMethod();
    }

    public string NonStaticMethod()
    {
        return MyNewClass.MyStringMethod(); //Cannot call non static method
    }
}

class MyNewClass
{
    public string MyStringMethod()
    {
        return "method called";
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:

无法在静态上下文中访问非静态方法"MyStringMethod".

如果我将MyStringMethod移动到类程序,这是有效的.我怎么能成功呢?我不能使类静态也不能使方法.

Mar*_*rkO 11

就像您创建一个Program类的实例来调用NonStaticMethod一样,您必须创建一个MyNewClass的实例:

public string NonStaticMethod()
{
    var instance = new MyNewClass();
    return instance.MyStringMethod(); //Can call non static method
}
Run Code Online (Sandbox Code Playgroud)


小智 5

非静态类需要一个实例来访问其成员。

在静态Main方法内创建实例,并调用非静态类成员:

static void Main(string[] args)
{
    MyNewClass p = new MyNewClass();
    var myString = p.MyStringMethod();
}
Run Code Online (Sandbox Code Playgroud)