是否有任何特殊原因需要单独的方法 Skip
和 SkipWhile
,而不是简单地重载相同的方法?
我的意思是,而不是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>)
,所以我怀疑这就是原因。
同样的问题适用于Take
和 TakeWhile
, 这是对上述内容的补充。
编辑:澄清一下,我知道变体之间的功能差异,我只是询问有关方法命名的设计决策。
最佳答案
IMO,唯一的原因是更好的可读性。 Skip
听起来像“跳过 N 条记录”,而 SkipWhile
听起来像“跳过直到满足条件”。这些名称不言自明
关于c# - LINQ 设计好奇心 : Skip/Take vs. SkipWhile/TakeWhile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19637202/