访问同一类中的公共方法需要实例

本文关键字:方法 实例 一类 访问 | 更新日期: 2023-09-27 18:02:21

我是c#的新手,所以原谅这个问题,但我很困惑:为什么我需要一个类Program的实例来访问方法Sandbox,这是公共的,在同一个类中?

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

访问同一类中的公共方法需要实例

public void Sandbox()
{
   ...
}

是重要的部分:这个方法没有被标记为static,所以它不能在上调用,只能在该类的实例上调用。如果您希望能够直接调用它,则需要

public static void Sandbox()
{
   ...
}

不能使用this

因为您试图从静态方法中访问它,但Sandbox是一个实例方法。

如果将Sandbox 设置为静态,则不需要:

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

请注意,它也不一定是public - public允许它被其他类和其他程序集使用,但在Program中,这是不需要的。

静态方法存在于Class级别,您可以将它们视为全局函数。任何non static方法都是实例级的,顾名思义,您只能在实例上执行instance方法。因此,通过实例化类,您已经创建了一个实例,现在可以调用任何public方法。在你的例子中,你也可以调用任何private方法或构造函数,因为你是从你正在创建的类创建实例。