いまさらだけども、C#のプロパティについて。要するに、外見はメンバ変数、内実はメソッドということですね。C++やJavaにはない便利な文法です。getter/setterを変数に見せかける糖衣構文といったところでしょうか。
namespace PropertyTest { class Hoge { public int Piyo { get { return piyo; } set { piyo = value; } // valueはキーワード } private int piyo; } class Program { static void Main(string[] args) { Hoge a = new Hoge(); a.Piyo = 101; System.Console.WriteLine( "a.Piyo = " + a.Piyo ); while (true) ; } } }
さらにデリゲートを使って、下記のようなことをすることもできますが、まあ、こんなのはせずに済むにこしたことはないでしょうね。
namespace DelegateTest { delegate int GetIntDelegate(); delegate void SetIntDelegate(int val); class Hoge { public int Piyo { get { return piyo; } set { piyo = value; } } private int piyo; } class Program { static void Main(string[] args) { Hoge a = new Hoge(); GetIntDelegate GetPiyo = delegate { return a.Piyo; }; SetIntDelegate SetPiyo = delegate(int val) { a.Piyo = val; }; SetPiyo(666); System.Console.WriteLine( "a.Piyo = " + GetPiyo() ); while (true) ; } } }