如何在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


以上是如何在C#中使用List的范围?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>