408

我最近开始使用从 Java 迁移过来的 c#。我似乎无法找到如何按索引获取列表项。在java中获取列表的第一项将是:

list1.get(0);

c#中的等价物是什么?

4

6 回答 6

458
list1[0];

假设列表的类型定义了一个索引器。

于 2013-03-17T02:06:41.527 回答
277

您可以使用列表中的 ElementAt 扩展方法。

例如:

// Get the first item from the list

using System.Linq;

var myList = new List<string>{ "Yes", "No", "Maybe"};
var firstItem = myList.ElementAt(0);

// Do something with firstItem
于 2013-11-18T13:06:57.973 回答
35

Visual Basic、C# 和 C++ 都具有无需使用名称即可访问 Item 属性的语法。相反,包含 List 的变量被用作数组:

List[index]

例如,参见List.Item[Int32] Property

于 2015-02-27T19:53:29.017 回答
21

老问题,但我看到这个线程最近很活跃,所以我会继续投入我的两分钱:

和米奇说的差不多。假设索引正确,您可以继续使用方括号表示法,就好像您正在访问数组一样。但是,除了使用数字索引之外,如果您的成员具有特定名称,您通常可以通过键入以下内容来进行同时搜索/访问:

var temp = list1["DesiredMember"];

你知道的越多,对吧?

于 2015-08-27T01:06:36.397 回答
19

.NETList数据结构是Array一个“可变外壳”。

因此,您可以使用索引来访问它的元素,例如:

var firstElement = myList[0];
var secondElement = myList[1];

C# 8.0开始,您可以使用IndexRange类来访问元素。它们提供从序列末尾的访问或仅访问序列的特定部分:

var lastElement = myList[^1]; // Using Index
var fiveElements = myList[2..7]; // Using Range, note that 7 is exclusive

您可以将索引和范围组合在一起:

var elementsFromThirdToEnd = myList[2..^0]; // Index and Range together

您也可以使用 LINQElementAt方法,但对于 99% 的情况,这实际上是没有必要的,只是性能缓慢的解决方案。

于 2020-02-27T11:07:00.627 回答
14

您可以使用索引来访问列表元素

List<string> list1 = new List<string>();
list1[0] //for getting the first element of the list
于 2020-03-18T08:21:17.403 回答