c# - LINQ 设计好奇心 : Skip/Take vs. SkipWhile/TakeWhile

标签 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 , 这是对上述内容的补充。

编辑:澄清一下,我知道变体之间的功能差异,我只是询问有关方法命名的设计决策。

最佳答案

IMO,唯一的原因是更好的可读性Skip 听起来像“跳过 N 条记录”,而 SkipWhile 听起来像“跳过直到满足条件”。这些名称不言自明

关于c# - LINQ 设计好奇心 : Skip/Take vs. SkipWhile/TakeWhile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19637202/

相关文章:

c# - 返回 Web 窗体中等效的文件

c# - Enum.ToString() 在工具提示中不起作用

c# - LinqToCSV 和十进制全局化

C# 按键中断对象的移动

c# - 获取应用于此实例的 c# 属性?

c# - 可空日期时间上的 linq

c# - 使用 LINQ 连接连接表中的列

c# - 列表包含在列表检查中

c# - 如何将 C# 对象本身设置为 null

c# - collectionviewsource 中的特定排序分组项目