LINQ Design Curiosity:Skip/Take vs. SkipWhile/TakeWhile

Bri*_*n S 2 c# linq

有没有什么特别的原因有不同的方法SkipSkipWhile相同的方法,而不是简单地重载?

我的意思是,相反的Skip(int),SkipWhile(Func<TSource,bool>)以及SkipWhile(Func<TSource,int,bool>),为什么不能有Skip(int),Skip(Func<TSource,bool>)Skip(Func<TSource,int,bool>)?我确信它有一些原因,因为整个LINQ系统是由比我更多经验的人设计的,但这种推理并不明显.

这是来心中唯一的可能性已经问题进行解析器的类似于SQL的语法,但已经事物之间的区别就像Select(Func<TSource,TResult>)Select(Func<TSource,int,TResult>),所以我怀疑这就是原因.

同样的问题也适用于TakeTakeWhile,这是免费的上面.

编辑:为了澄清,我知道变体之间的功能差异,我只是询问关于方法命名的设计决策.

Hab*_*bib 7

IMO,唯一的原因是更好的可读性.Skip听起来像"跳过N个记录",而SkipWhile听起来像"跳过一个条件".这些名称不言自明