web-dev-qa-db-ja.com

メソッドカスケードはC#で検討されたことがありますか?

Smalltalkは、「メッセージカスケード」と呼ばれる構文機能をサポートしています。 カスケードが採用されていますDartプログラミング言語

私の知る限り、C#はこれをサポートしていません。言語の設計中にそれらが考慮されたことはありますか?それらが言語の将来のバージョンで表示される可能性があると考えられますか?

2
dharmatech

流暢なインターフェイスは、returnthisを使用してC#で簡単にサポートされます。

Linqでは、拡張メソッドを使用して同じことを実現します。 IQueryableまたはIEnumerableの拡張メソッドは簡単にチェーンできます。

あなたが提供したリンクのページで説明されているように、カスケードは、すべてのメソッド呼び出しのように、それを機能させるためにreturnthisが必要とされない通常の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に質問する必要があります。私の推測では、彼らはそれをシンタックスシュガーと見なしていると思いますが、実際はそうです。

16
Robert Harvey