2

自動プロパティ作成(つまり、{get; set})を使用して生成されるプライベートバッキングフィールドをC#に作成させることの欠点はありますか?

自動であるため、get / setをカスタマイズできないことを認識しており、他に影響があるかどうかを知りたいと思います。

ありがとう!

4

3 に答える 3

6

私が遭遇した最大の問題は、拘束力のあるシナリオを見るとき、それがしばしば非常に制限的であるということです。通常、データバインディングを使用する場合は、自動プロパティでサポートされていないINotifyPropertyChangedを実装する必要があります。

于 2011-04-25T13:14:05.627 に答える
4

を使用している場合BinaryFormatter、フィールド名はBFにとって重要であるため、自動的に実装されたプロパティへの変更(またはからの変更)は重大な変更です。もちろん、簡単な解決策が1つあります。BFを使用しないでください。

自動プロパティを使用してバッキングフィールドに属性を追加することもできません。

フィールドイニシャライザーはありません。

readonly不変性での使用には当てはまりません。

もちろん、ロジックを追加することはできません。怠惰、検証、副作用、通知イベントはありません。

構造体では、カスタムコンストラクターを呼び出す必要がありますが:this()、これは醜いです。

そうでなければ、しかし:彼らは素晴らしいです。私は大ファンです。

于 2011-04-25T13:42:31.950 に答える
2

最大の問題は、バッキングフィールドはコンパイラによって作成されるため、バッキングフィールドを操作できないことです。これは、それらをconstまたはreadonlyとして宣言できないことを意味します。つまり、それらにアクセスするためのロジックを追加できないことを意味します(たとえば、遅延初期化)。理由があるときは簡単です。

于 2011-04-25T13:19:47.440 に答える