关于列表上的方法链
本文关键字:方法 列表 于列表 | 更新日期: 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()
签名,无法判断方法是否返回相同的对象或以相反的顺序克隆。