C#では、インターフェイスによってバックアップされることなく、これらすべての魔法のメソッドがポップアップ表示されるようになりました。なぜこれが選ばれたのですか?
説明させてください。
以前のC#では、オブジェクトがIEnumerable
インターフェイスを実装すると、foreach
ループによって自動的に反復可能になりました。インターフェースによってバックアップされているため、それは理にかなっています。Iterator
繰り返し処理されるクラス内に独自の関数がある場合、魔法のように何かを意味することを心配せずにそれを行うことができます。
今、どうやら(いつかはわからないが)、これらのインターフェースはもはや必要ではない。正しい命名変換が必要なだけです。
別の例は、いくつかの特定のプロパティを持つ正確 な名前のメソッドを持つことにより、オブジェクトを待機可能にすることGetAwaiter
です。
この「マジック」を静的にバックアップしIEnumerable
たりINotifyPropertyChanged
、静的にバックアップしたりするようなインターフェースを作成してみませんか?
ここでの意味の詳細:
http://blog.nem.ec/2014/01/01/magic-methods-c-sharp/
魔法の手法の長所と短所は何ですか?また、これらの決定が行われた理由について何かを見つけることができるオンラインの場所はどこにありますか?
async
/のインターフェイスが必要な場合、await
.NET 4.5が実行可能なターゲットとなるのに十分な規模になった後に作成されたコードでのみ機能します。しかし、メソッド呼び出しへの純粋な構文変換によりawait
、事後に既存の型に機能を追加することができます。
foreach
、最初のループバックの基本機能として実装されました。オブジェクトが機能するために実装する必要はありませんでした。そうするのは慣例に過ぎません。IEnumerable
foreach