.NET提供的集合命名空间中,有个常用的列表list
这个数据结构,在使用过程中,遇到了一个陷阱,也是暂时没想明白的问题,在这里备忘一下。
请看下面测试
IList<int> rtn2 = new List<int>() {0, 4, 9};
rtn2.Reverse();
上面执行反转后,rtn2的顺序未发生任何变动。
只能将rtn2声明为List<int>
才能执行反转。
后记
经过github上给Corefx库提这个issue,才发现这是一个用法的问题。具体说来,List<int>.Reverse
这个Reverse就地反转,对于IList<int> 继承于IEnumerable<int>.Reverse 返回的值才是反转后的元素,参数的值不会变动。