通过索引获取列表项

Posted

技术标签:

【中文标题】通过索引获取列表项【英文标题】:Getting a list item by index 【发布时间】:2013-03-05 14:38:37 【问题描述】:

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

list1.get(0);

c#中的等价物是什么?

【问题讨论】:

请参阅***.com/questions/5326874/…,了解有关是否使用 [] 运算符或 ElementAt() 方法的一些讨论。 @user1909486:您尚未接受任何问题的答案 【参考方案1】:
list1[0];

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

【讨论】:

解释为什么可以访问列表的唯一答案,它是一个对象,如数组 它是否返回列表中对象的副本?对象=列表[0]; list.clear(); // obj 还会被填充吗? @Paul McCarthy:您可以自己轻松测试,但是可以。列表包含对对象的引用。清除列表不会影响其中保存的对象。如果没有其他对这些对象的引用,它们将在某个时间点被垃圾回收。【参考方案2】:

可以在列表中使用 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

【讨论】:

请注意 ElementAt() 需要using System.Linq; 与标准的myList[0] 表示法相比,这有什么优势吗? “我为什么要使用 Enumerable.ElementAt() 而不是 [] 运算符?” ***.com/questions/5326874/… .ElementAtOrDefault(); @AnalogWeapon 是的 - 您可以将其用作空安全链的一部分,例如myCollectionWhichMightBeNull?.ElementAt(0) 或保护不存在的元素:myCollection.ElementAtOrDefault(0)?.SomeProperty【参考方案3】:

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

List[index]

例如: https://msdn.microsoft.com/en-us/library/0ebtbkkc(v=vs.110).aspx

【讨论】:

【参考方案4】:

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

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

var temp = list1["DesiredMember"];

你知道的越多,对吧?

【讨论】:

【参考方案5】:

.NET List 数据结构是“可变外壳”中的 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

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

【讨论】:

【参考方案6】:

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

List<string> list1 = new List<string>();
list1[0] //for getting the first element of the list

【讨论】:

以上是关于通过索引获取列表项的主要内容,如果未能解决你的问题,请参考以下文章

获取 SectionList 项 React-Native 的索引

如何在 Qt 中获取选定的列表项索引

Android ListView:获取可见项的数据索引

如何获取所选列表视图项中的id以打开上下文菜单并通过下一个活动来实现目标。

第十节:Vue指令:v-for列表循环

第十节:Vue指令:v-for列表循环