访问同一类中的公共方法需要实例
本文关键字:方法 实例 一类 访问 | 更新日期: 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
方法或构造函数,因为你是从你正在创建的类创建实例。