提问人:Stefan 提问时间:3/21/2017 最后编辑:Stefan 更新时间:1/9/2021 访问量:1048
为什么我可以在另一个实例上调用私有方法而不是它本身 [duplicate]
Why can I call a private method on another instance than itself [duplicate]
问:
我想知道为什么 C# 中允许以下内容:
当我用私有方法定义一个类时。让我们调用它的实例。现在,我在其中一个公共方法中创建了一个实例。此实例称为 。两种相同类型的实例也是如此。MyClass
A
MyClass
B
B
A
我可以从 调用这个私有方法。
对我来说,该方法是私有的,这意味着只能调用它本身,而不能调用其他类。显然,另一个相同类型的类也可以调用它。B
A
B
B
为什么会这样? 这与私钥的确切含义有关吗?
代码示例:
public class MyClass
{
private static int _instanceCounter = 0;
public MyClass()
{
_instanceCounter++;
Console.WriteLine("Created instance of MyClass: " + _instanceCounter.ToString());
}
private void MyPrivateMethod()
{
Console.WriteLine("Call to MyPrivateMethod: " + _instanceCounter.ToString());
}
public MyClass PublicMethodCreatingB()
{
Console.WriteLine("Start call to PublicMethodCreatingB: " + _instanceCounter.ToString());
MyClass B = new MyClass();
B.MyPrivateMethod(); // => ** Why is this allowed? **
return B;
}
}
谢谢!
答:
5赞
Nathangrad
3/21/2017
#1
B.MyPrivateMethod();
是允许的,因为该方法是在类中的方法内调用的。您将无法在类中的方法之外调用,但是,由于在同一个类中,因此所有私有方法和变量都可供它访问。MyClass
MyPrivateMethod()
MyClass
PublicMethodCreatingB
评论
0赞
Stefan
3/23/2017
谢谢,它帮助了我!
评论
private
作用域为类,而不是实例。