Smalltalkは、「メッセージカスケード」と呼ばれる構文機能をサポートしています。 カスケードが採用されていますDartプログラミング言語 。
私の知る限り、C#はこれをサポートしていません。言語の設計中にそれらが考慮されたことはありますか?それらが言語の将来のバージョンで表示される可能性があると考えられますか?
流暢なインターフェイスは、return
this
を使用してC#で簡単にサポートされます。
Linqでは、拡張メソッドを使用して同じことを実現します。 IQueryable
またはIEnumerable
の拡張メソッドは簡単にチェーンできます。
あなたが提供したリンクのページで説明されているように、カスケードは、すべてのメソッド呼び出しのように、それを機能させるためにreturn
this
が必要とされない通常のFluentインターフェイスの微妙な改良にすぎないようですから始まる ..
最初に返された結果を参照してください:
query('#my-form').query('button')
..classes.add('toggle')
..text = 'Click Me!'
..labels.add(toggleLabel);
C#はこれをサポートしていますか?いいえ、正確ではありません。ただし、次の同等のコードを記述できます。
var result = query('#my-form').query('button')
result.classes.add('toggle')
result.text = 'Click Me!'
result.labels.add(toggleLabel);
そして、それはほんの少しだけ冗長です(そして間違いなく読みやすいです)。
「彼らがC#を検討したことがあるか」という質問については、AndersHejlsbergまたはEricLippertに質問する必要があります。私の推測では、彼らはそれをシンタックスシュガーと見なしていると思いますが、実際はそうです。