如何在C#中使用List的范围?
c#
使用 C# 8,我们获得了获取“子列表”的范围。
虽然这有效:
var array = new string[] { "abc", "def", "ghi" };
var subArray = array[0..1]; // works
这不会:
var list = new List<string> { "abc", "def", "ghi" };
var subList = list[0..1]; // does not work
如何在列表中使用范围?
回答
列表本身不支持范围。但是,如果您只有一个 Range,您可以创建一个有用的扩展方法,如下所示:
public static class ListExtensions
{
public static List<T> GetRange<T>(this List<T> list, Range range)
{
var (start, length) = range.GetOffsetAndLength(list.Count);
return list.GetRange(start, length);
}
}
然后您可以使用它来获取您的子列表:
var list = new List<string> { "abc", "def", "ghi" };
var subList = list.GetRange(0..1);
回答
您可以使用ToArray()方法来解决问题:
var list = new List<string> { "abc", "def", "ghi" };
var subList = list.ToArray()[0..1]; // works
但请注意,List<T>具有GetRange做同样事情的方法:
var list = new List<string> { "abc", "def", "ghi" };
var subList = list.GetRange(0,1);//abc