关于列表上的方法链

本文关键字:方法 列表 于列表 | 更新日期: 2023-09-27 18:01:39

为什么List<T>.Reverse()等方法修改List而不是返回一个新的?我真的很喜欢链式方法并编写简洁的一行程序。

这样做在资源使用和效率方面是否有优势?对我来说像

myList = myList.Reverse().RemoveAll(...);

等。比将每个修改语句放在自己的行上更有意义(并且看起来更好)。

我知道myList.RemoveAll(...)myList = myList.RemoveAll(...)短,但只有当它是一个单独的语句时才更方便。

关于列表上的方法链

"为什么API以特定的方式形成"实际上是基于意见的问题。Fluent API并没有被普遍认为是"最好的东西",其他方法也完全有效。

现在的特殊情况"为什么List.Reverse()不返回copy/this"有坚实的理由,所以回答那部分:

Reverse()方法没有返回值API的事实表明该方法修改了现有的列表。如果方法返回List,它可以防止对行为的多种解释的可能性-通过查看List Reverse()签名,无法判断方法是否返回相同的对象或以相反的顺序克隆。