C# 访问同一类中的公共方法需要实例吗?

C# 访问同一类中的公共方法需要实例吗?,c#,C#,我是C#的新手,所以请原谅这个问题,但我很困惑:为什么我需要一个类程序实例来访问同一个类中的公共方法沙盒 namespace GoogleTest { class Program { static void Main(string[] args) { Program p = new Program(); p.Sandbox(); } p

我是C#的新手,所以请原谅这个问题,但我很困惑:为什么我需要一个类程序实例来访问同一个类中的公共方法沙盒

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

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

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

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

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

public static void Sandbox()
{
        ...
}

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

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

public void Sandbox()
{
   ...
}
如果将沙盒设置为静态,则不需要:

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

public static void Sandbox()
{
        ...
}
请注意,它也不必是
public
-
public
允许其他类和其他程序集中使用它,但在
程序中使用它是不需要的

public void Sandbox()
{
   ...
}
是重要的部分:此方法没有标记为静态,因此它不能在类的实例上调用,而是在类的实例上调用。如果你想直接打电话给它,你需要

public static void Sandbox()
{
   ...
}
并且不能使用此

是重要的部分:此方法没有标记为静态,因此它不能在类的实例上调用,而是在类的实例上调用。如果你想直接打电话给它,你需要

public static void Sandbox()
{
   ...
}

不能使用<代码> <<代码> .< /p> 静态方法存在于类< /代码>级别,可以考虑它们为全局函数。任何
非静态
方法都是实例级的,顾名思义,您只能在实例上执行
实例
方法。因此,通过实例化类,您已经创建了一个实例,现在可以调用任何
public
方法。在您的示例中,您也可以调用任何<代码>私有< /COD>方法或构造函数,因为您正从正在创建的类创建实例。

< P>静态方法存在于类< /代码>级别,可以将它们视为全局函数。任何
非静态
方法都是实例级的,顾名思义,您只能在实例上执行
实例
方法。因此,通过实例化类,您已经创建了一个实例,现在可以调用任何
public
方法。在您的示例中,您还可以调用任何
private
方法或构造函数,因为您正在使用正在创建的类创建实例。

从测试代码中删除
public
。用新信息再次提问。另外,搜索-并报告-在不“使用实例”时收到的错误消息@user2864740:我没有收到错误。我就是看不到没有实例的非静态方法。我理解下面指出的基本知识。令人困惑的是,我意识到我需要一个程序本身中的程序实例。现在我明白了。感谢所有。从测试代码中删除
public
。用新信息再次提问。另外,搜索-并报告-在不“使用实例”时收到的错误消息@user2864740:我没有收到错误。我就是看不到没有实例的非静态方法。我理解下面指出的基本知识。令人困惑的是,我意识到我需要一个程序本身中的程序实例。现在我明白了。谢谢大家。