使用控制台应用程序调用非静态类
本文关键字:静态类 调用 应用程序 控制台 | 更新日期: 2023-09-27 18:08:12
我试图从另一个类调用控制台应用程序的方法。我尝试调用的类不是静态的。
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";
}
}
我得到错误:
不能在静态上下文中访问非静态方法"MyStringMethod"。
如果我将MyStringMethod移动到类程序中,则可以正常工作。我怎样才能做到这一点呢?
就像您创建一个Program类的实例来调用NonStaticMethod一样,您必须创建一个MyNewClass的实例:
public string NonStaticMethod()
{
var instance = new MyNewClass();
return instance.MyStringMethod(); //Can call non static method
}
非静态类需要实例来访问其成员。
在静态Main方法中创建实例并调用非静态类成员:
static void Main(string[] args)
{
MyNewClass p = new MyNewClass();
var myString = p.MyStringMethod();
}
如果你想调用非静态类的成员函数,那么你必须创建它的实例,然后调用它所需的函数。
对于调用非静态类MyNewClass的MyStringMethod(),这样做:
class Program
{
static void Main(string[] args)
{
Program p = new Program();
var myString = p.NonStaticMethod();
}
public string NonStaticMethod()
{
MyNewClass obj = new MyNewClass();
if(obj != null)
return obj.MyStringMethod();
else
return "";
}
}
class MyNewClass
{
public string MyStringMethod()
{
return "method called";
}
}
非静态方法需要实例。你应该像创建一个程序一样创建它来调用它的非静态方法。
您需要创建一个MyNewClass
的实例
class Program
{
//instantiate MyNewClass
var myNewClass = new MyNewClass();
static void Main(string[] args)
{
Program p = new Program();
var myString = p.NonStaticMethod();
}
public string NonStaticMethod()
{
//use the instance of MyNewClass
return myNewClass.MyStringMethod(); //Cannot call non static method
}
}
class MyNewClass
{
public string MyStringMethod()
{
return "method called";
}
}