【发布时间】:2017-03-02 04:36:12
【问题描述】:
我知道静态意味着变量或方法属于类本身,我们可以将它与 ClassName.StaticMethodName 一起使用。所以问题是:我们可以在另一个非静态方法中使用非静态方法,但我们不能在静态方法中使用非静态方法。我只是不明白为什么我们可以在另一个非静态方法中使用非静态方法?我们不需要一个对象来使用非静态方法吗?对于静态方法,我们需要使用类名,这就足够了。但是,为什么我们不需要对象来使用方法呢?例如:
//这段代码不会产生任何错误。还有什么我不知道的?也许 C# 在 methodB() 之前添加一个隐藏对象?
ClassA()
{
public void methodA()
{
methodB();
}
public void methodB()
{
}
}
【问题讨论】:
-
代码不会产生错误,但如果没有对象实例,您将无法调用这些函数
-
methodB 在内部被称为 this.methodB 即它们共享同一个类实例
-
在methodA内部调用methodB时,你已经创建了ClassA的一个实例,即对象本身。
标签: c# methods static non-static