为什么List<T>.Reverse()
等方法会修改List
而不是返回新的?我真的很想链接方法并编写整齐的单行程序。
在资源使用和效率方面是否有优势?对我来说像
myList = myList.Reverse().RemoveAll(...);
等。比在每条修改语句自己的行上更有意义(并且看起来更好)。
我了解myList.RemoveAll(...)
比myList = myList.RemoveAll(...)
短,但只有单一陈述才更方便。
答案 0 :(得分:0)
“为什么API以特定的方式塑造”是真正基于意见的问题。流利的API并不是普遍接受的“最好的东西”,其他方法也是完全有效的。
现在“为什么List.Reverse()
没有返回copy / this”的特殊情况有充分的理由如此回答:
事实Reverse()
方法没有返回值API表明该方法修改了现有列表。如果方法返回List
,它会阻止对行为进行多种解释的可能性 - 通过查看List Reverse()
签名,不能说方法是否返回相同的对象或以相反的顺序克隆。