簡體   English   中英

在類(C#)中訪問方法

[英]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 staticinternal static ,然后通過調用NewState.State()進行調用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM