在同一个类中访问公共方法需要一个实例?

时间:2014-05-08 19:18:39

标签: c#

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

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

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

3 个答案:

答案 0 :(得分:4)

public void Sandbox()
{
   ...
}

是重要的部分:此方法未标记为静态,因此不能在上调用,而是在类的实例上调用。如果您希望能够直接调用它,则需要

public static void Sandbox()
{
   ...
}

并且无法使用this

答案 1 :(得分:1)

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

如果您Sandbox 静态,则不需要这样做:

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

public static void Sandbox()
{
        ...
}

请注意,它也不一定是public - public允许其他类和其他程序集使用它,但在Program内,{39} ;不是必需的。

答案 2 :(得分:1)

静态方法存在于Class级别,您可以将它们视为全局函数。任何non static方法都是实例级别,正如名称所暗示的那样,您只能在实例上执行instance方法。因此,通过实例化您已创建实例的类,现在可以调用任何public方法。在您的示例中,您还可以调用任何private方法或构造函数,因为您正在使用您正在创建的类创建实例。