关于静态和非静态方法

Mus*_*ürk 1 c# methods static non-static

我知道静态意味着变量或方法属于类本身,我们可以将它与ClassName.StaticMethodName一起使用.所以问题是:我们可以在另一个非静态方法中使用非静态方法,但我们不能在静态方法中使用非静态方法.我只是不明白为什么我们可以在另一个非静态方法中使用非静态方法?我们不需要一个对象来使用非静态方法吗?对于静态方法,我们需要使用类名,这就足够了.但是,为什么我们不需要对象来使用方法?例如:

//此代码不会生成任何错误.还有一些我不知道的东西?也许C#在methodB()之前添加一个隐藏的对象?

ClassA()
{
  public void methodA()
  {
    methodB();
  }
  public void methodB()
  {
  }
}
Run Code Online (Sandbox Code Playgroud)

dah*_*hui 5

我只是不明白为什么我们可以在另一个非静态方法中使用非静态方法?

要调用非静态方法,您需要一个可以调用方法的对象实例.在此示例中,如果没有实例化的ClassA实例,则无法调用MethodA.

出于这个原因,我们知道如果我们在MethodA中,必须有一个现有的实例正在执行此函数.因此,调用MethodB是有效的,因为它是在MethodA当前运行的同一对象上调用的.