[英]Accessing Methods Within a Class (C#)
我有一個非常簡單的問題。 話雖這么說,我試圖通過搜索stackexchange先前回答的問題來解決它,但是我很簡短。 這是因為我想知道如何告訴程序的入口點訪問其他類。
我以前曾編寫過一個簡單的有限狀態機,但由於我不知道如何將其分解為類,所以代碼變得很擁擠。 在我的新程序中,我試圖對其進行分解,以便對其進行更好的管理。
入口點通過訪問我創建的類NewState()
。 如果您運行該代碼,則會觀察到,盡管編譯正確,但NewState()
內的函數不會產生我想要的Console.WriteLine
語句。
所以,我的問題是這樣的:
如何使我的代碼訪問NewState
類中的static void State()
方法並顯示Console.WriteLine
語句?
程序類別:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Finite_State_Machine_3
{
class Program
{
static void Main(string[] args)
{
new NewState();
}
}
}
NewState類:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Finite_State_Machine_3
{
class NewState
{
static void State()
{
Console.WriteLine("Hello world");
}
}
}
該方法是靜態的,因此不要創建實例,而是將State
方法公開,然后嘗試
static void Main(string[] args)
{
NewState.State();
}
但是,如果要這樣稱呼它,最好將它放在同一個類中。
class Program
{
static void Main(string[] args)
{
State();
}
static void State()
{
Console.WriteLine("Hello world");
}
}
如果確實要在單獨的類中使用它,並從該類的實例中調用它,則需要使State
方法成為非靜態的(以及公共的)並從該實例中調用它
class Program
{
static void Main(string[] args)
{
NewState MyVariable = new NewState();
MyVariable.State();
}
}
class NewState
{
public void State()
{
Console.WriteLine("Hello world");
}
}
如果它是靜態的,那么您將從類而不是實例中調用它。
所以,
NewState.State()
就是說,如果我沒記錯我的設計模式,那么您實際上是想傳遞實例,而不是使用靜態方法。
您需要將方法設置為public static
或internal static
,然后通過調用NewState.State()
進行調用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.