次のコードを検討してください。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test
{
class Program
{
static void Main(string[] args)
{
Foo foo = new Foo();
Foo foo2 = new Foo();
foo.Test(foo);
Console.ReadLine();
}
}
public class Foo
{
public void Test(Foo foo)
{
Console.WriteLine("I was called");
foo.test_fuction();
}
private void test_fuction()
{
Console.WriteLine("!");
}
}
}
この場合、private キーワードによって、インスタンスのメンバー変数と関数へのアクセスが妨げられることが予想されます。これにより、誰かが一部のオブジェクトへの不十分なラウンドアバウト アクセスを作成できるようになるのではないでしょうか? この動作を防ぐ方法はありますか? それとも正当な理由で意図されていますか?