[英]Call a non-static class with a 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";
}
}
我收到錯誤:
無法在靜態上下文中訪問非靜態方法“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";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.