簡體   English   中英

訪問同一類中的公共方法需要實例嗎?

[英]Accessing public methods in same class requires an Instance?

我是C#的新手,所以可以原諒這個問題,但我感到困惑:為什么我需要一個類Program的實例來訪問方法Sandbox,該方法在同一類中是公共的?

namespace GoogleTest
{
    class Program
    {
        static void Main(string[] args)
        {    
            Program p = new Program();
            p.Sandbox();            
        }

        public void Sandbox()
        {
            ...
        }
    }
}
public void Sandbox()
{
   ...
}

是重要的部分:此方法未標記為靜態,因此不能在上調用,而是在類的實例上調用。 如果您希望能夠直接調用它,則需要

public static void Sandbox()
{
   ...
}

不能使用this

因為您嘗試從靜態方法中訪問它,但是Sandbox是實例方法。

如果將Sandbox設為static ,則不需要:

static void Main(string[] args)
{    
    Sandbox();            
}

public static void Sandbox()
{
        ...
}

請注意,它也不必是public public允許其他類和其他程序集使用它,但是在Program ,這不是必需的。

靜態方法存在於Class級別,可以將它們視為全局函數。 任何non static方法都是實例級別的,顧名思義,您只能在instance上執行instance方法。 因此,通過實例化該類,您已經創建了一個實例,現在可以調用任何public方法。 在您的示例中,您還可以調用任何private方法或構造函數,因為您是使用要創建的類創建實例的。

暫無
暫無

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

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