在C#中通过索引获取List的元素

时间:2017-01-18 13:17:45

标签: c# list

我正在尝试访问C#中的List项目。我有一个列表List<int[]>。我必须将List的前三个元素(整数数组)分配给变量。这就是我的工作;

int[] c1 = lst.ElementAt(0);
int[] c2 = lst.ElementAt(1);
int[] c3 = lst.ElementAt(2);

我也尝试通过lst[0], lst[1], lst[2]代替ElementAt()访问它。但是虽然列表的前三个元素彼此不同,但所有变量都取第一个列表项的值。我通过调试检查了值。我做错了什么,另外还有一个问题是,lst[0]lst.ElementAt(0)之间有什么区别。

1 个答案:

答案 0 :(得分:3)

你做错了什么。因为ElementAt的默认实现如下所示:

 public static TSource ElementAt<TSource>(this IEnumerable<TSource> source, int index) {
        if (source == null) throw Error.ArgumentNull("source");
        IList<TSource> list = source as IList<TSource>;
        if (list != null) return list[index];
        if (index < 0) throw Error.ArgumentOutOfRange("index");
        using (IEnumerator<TSource> e = source.GetEnumerator()) {
            while (true) {
                if (!e.MoveNext()) throw Error.ArgumentOutOfRange("index");
                if (index == 0) return e.Current;
                index--;
            }
        }
    }

对于任何实现IList的内容,它将使用与您相同的索引器