まず、この質問が以前に何度か聞かれたことは知っていますが、最終的にはほとんどが個人的な好みの問題ですが、この件に関するすべてのスレッドを読むと、いくつかのことが明確ではありません.
基本的に、ほとんどの人が少なくとも同意することは、パブリック メンバーは PascalCased にする必要があり、プライベート メンバーは LowerCamelCased にする必要があるということです。
通常、プライベート メンバーの前にアンダースコアを付けるかどうかは、議論の余地があります。プレフィックスは、いくつかの StyleCop ルールに違反しています (ただし、明らかにオフにすることができます)。
プレフィックスを付けない理由は、これを使用する必要があるためです。代わりにプレフィックスを付けます。
私が抱えている問題は、それがどのように違いを生んでいるのか理解できないということですか? つまり、クラス内の public メンバーでこれを使用できないわけではありません。
次のような Customer クラスを想像してみましょう。
class Customer
{
private int age;
public int Age
{
get { return this.age; }
set { this.age = value; }
}
}
(明らかに、このような単純なケースでは、自動プロパティを使用できますが、これは単なる例です)。
このクラス内に 2 番目のプロパティを追加した場合、this.age (プライベート フィールド) ではなく this.Age (パブリック プロパティ) を使用して参照することを妨げるものは何もありません。場合によっては、getter レベルで何らかの検証またはフォーマットが適用されていれば、それが望ましいこともあります。
また、顧客の Age を変更するためにクラスの他のプロパティが必要な場合は、バッキング フィールドを直接使用するのではなく、プロパティを使用する方が理にかなっています。セッターはいくつかのビジネス ルールの検証も実装できるからです。
言い換えれば、これは両方で使用でき、IntelliSense は両方を表示するため、このキーワードがプライベート バッキング メンバーとパブリック プロパティの間の混乱をどのように回避するのか本当にわかりませんか?
ありがとう。