Foo
C# を使用しているときに、オブジェクトのプライベート関数をFoo
の静的関数から、さらには他のオブジェクトからも呼び出すことができることに最近気付きましたFoo
。アクセス修飾子について学んだすべての後、これは私には非常に奇妙に思えます。
私の知る限り、ある種の内部プロセスの一部である何かを行う場合、関数をプライベートにします。他のオブジェクトはオブジェクトのフローを制御すべきではない/制御できないため、これらの関数をいつ使用するかを知っているのはオブジェクト自体だけです。同じクラスの他のオブジェクトをこの非常に単純なルールから除外する必要がある理由はありますか?
リクエストに応じて、例:
public class AClass {
private void doSomething() { /* Do something here */ }
public void aFunction() {
AClass f = new AClass();
f.doSomething(); // I would have expected this line to cause an access error.
}
}