C#では、フィールドは必ずprivateにした方が良い。
フィールドとプロパティではその背景にある思想が全く異なる。
フィールドは内部のデータでプロパティは外部とのインターフェイスである。
また以下の二つのコードには実質的な違いもいくつかある。
public int hp;
public int HP{get; set;}
**違い **
1. バイナリ互換性がない
2. .NET Frameworkにはプロパティでないと使えない機能がある。
3. データの互換性がなくなる場合がある。
またそれ以外にも、C#ではプロパティは大文字(Pascal形式)、フィールド名は小文字(Camel形式)で始めるのがお約束であるので
意思疎通がうまくいかなくなったりもするかもしれない。