我是C#的新手,所以请原谅这个问题,但我很困惑:为什么我需要一个类程序实例来访问公共和同一类的方法Sandbox?
namespace GoogleTest
{
class Program
{
static void Main(string[] args)
{
Program p = new Program();
p.Sandbox();
}
public void Sandbox()
{
...
}
}
}
答案 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
方法或构造函数,因为您正在使用您正在创建的类创建实例。