2

単純に同じメソッドのオーバーロードを使用するのではなく、別々のメソッドSkipとを使用する特定の理由はありますか?SkipWhile

つまり、、、およびの代わりに、、、およびSkip(int)を使用SkipWhile(Func<TSource,bool>)SkipWhile(Func<TSource,int,bool>)ないのはなぜですか? LINQ システム全体が私よりもはるかに多くの経験を持つ人々によって設計されたので、それには何らかの理由があると確信していますが、その理由は明らかではありません。Skip(int)Skip(Func<TSource,bool>)Skip(Func<TSource,int,bool>)

頭に浮かぶ唯一の可能性は、SQL に似た構文のパーサーの問題ですが、それはすでに と のようなものを区別しているSelect(Func<TSource,TResult>)のでSelect(Func<TSource,int,TResult>)、それが理由だとは思いません。

上記を補完するTakeとにも同じ質問が当てはまります。TakeWhile

編集:明確にするために、バリアント間の機能の違いを認識しています。メソッドの命名に関する設計上の決定について質問しているだけです。

4

2 に答える 2

7

IMO、唯一の理由は読みやすさです。Skip「N 個のレコードをSkipWhileスキップする」のように聞こえますが、「条件が満たされるまでスキップする」のように聞こえます。これらの名前は一目瞭然です

于 2013-10-28T14:20:07.090 に答える