アクセス修飾子については個別につけるしかありません。そういうものです。
プロパティについては、考え方としてはあってますが記述には注意してください。
コード:
class A {
public int a {
get { return a; }
set { a = value; }
}
}
この記述で aのセッターを使おうとして
コード:
var a = new A();
a.a = 10;
とすると死にます。Aクラスのaというセッターのプロパティは
が内容ですので、受け取った値を aに対して与えようとします。
しかしこのセッターに記述されているaはAクラスのセッターのプロパティ名ですので、また受け取った値を aに対して与えようとします。
つまり、無限ループになって止まらなくなり、プログラムが落ちます。
この場合、意図した動作であろうコードは以下のような物になります
コード:
class A {
private int _a;
public int a {
get { return _a; }
set { _a = value; }
}
}
さらに、こういう場合は以下のような記述でよいです。
コード:
class A {
public int a {
get;
set;
}
}
この記述ですと、get set の中身が自動的に実装されて、プログラマからみえない変数に自動でget setしてくれます。
オフトピック
記述としては以上になりますが、そもそもsetter,getterを当然のようにつくるような設計は何かがおかしい可能性があります。
getterはある程度仕方ないこともありますが、setterはなるべくいらなくなるような設計のほうが扱いやすくなりやすいでしょう。