パブリックC#フィールド
2004年2月4日
C#に出会ったときから、プロパティという概念が気に入りました。C++/JavaのgetXやsetXという記法はいつもばかげていると思っていました。obj.X = other.X
と書くほうがはるかに自然です。getterとsetterメソッドを備えたプロパティを提供することで、一般的な規則が言語の自然にサポートされる機能に変わりました。
もう一気に入った点は、言語の観点からすると、プロパティとフィールドは同じように見えることです。したがって、読み書き可能なフィールドxがあれば、それをフィールドとして宣言することができます。カプセル化を破るのではないかと心配する必要はありません。より高度なことを行いたい場合は、後でプロパティに置き換えることができます。これにより、無駄なアクセサー関数を大幅に削減できます。
しかし、すべてがそれほど単純なわけではありません。フィールドとプロパティは、プログラムテキストの面では同じアクセス権を持ちますが、リフレクションでは異なる方法で表現されます。その結果、フィールドとプロパティを切り替えると、リフレクションを使用するさまざまなツールが壊れます。
そのため、アクセス可能なデータ値に対しては、愚かなアクセサー関数を記述する必要があります。ため息。(またはRubyを使用します。)