当前位置:  开发笔记 > 编程语言 > 正文

.NET相当于Java的List.subList()?

如何解决《.NET相当于Java的List.subList()?》经验,为你挑选了2个好方法。

是否有一个.NET相当于Java的的List.subList(),工程上IList



1> Kamarey..:

使用LINQ

list.Skip(fromRange).Take(toRange - fromRange)


@Kamarey:很公平,但是解决方案应该有一个免责声明.一般来说,似乎有办法达到你想要的东西,但没有单一的1:1匹配的子列表()(这不是一个问题,但应该注意的).
这是否将视图返回到原始列表或范围的副本?

2> Razzie..:

对于通用List,它是GetRange(int, int)方法.

编辑:请注意,这是浅拷贝,而不是原始的"视图".我不认为C#提供了确切的功能.

Edit2:正如Kamarey所指出的,你可以有一个只读视图:

List integers = new List() { 5, 6, 7, 8, 9, 10, 11, 12 };
IEnumerable view = integers.Skip(2).Take(3);
integers[3] = 42;

foreach (int i in view )
  // output

以上将打印7,42,9.


从MSDN文档(http://msdn.microsoft.com/en-us/library/21k0e39c.aspx)看起来似乎不一样:GetRange()返回一个浅表副本,而subList()返回一个视图(即对subList()的更改将反映在原始List中!)
推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有