C#はメンバ変数の代わりにプロパティを定義しやすくするために、プロパティの自動実装機能が追加されているので、publicメンバ変数は定義するべきではなく、独自のget関数やset関数を用意することもよくないらしい。
書き方
private int hoge;
public int Hoge
{
get { return hoge; }
set { hoge = value; }
}
privateメンバ変数を省いた形
public int Hoge{get;set;}
関数扱いらしいので仮想関数にもできる
public virtual int Hoge{get;set;}
片方だけアクセス修飾子をかえたりもできる
public int Hoge{
get;
protected set;
}