按索引获取列表项

use*_*486 289 c# list

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

list1.get(0);
Run Code Online (Sandbox Code Playgroud)

c#中的等价物是什么?

Mit*_*eat 329

list1[0];
Run Code Online (Sandbox Code Playgroud)

假设列表的类型定义了索引器.

  • 唯一的答案解释了为什么可以访问列表,这是一个对象,如数组 (4认同)
  • @Paul McCarthy:你可以轻松地自己测试一下,但是是的。列表保存对对象的引用。清除列表不会影响其中保存的对象。如果没有其他对这些对象的引用,它们将在某个时间点被垃圾收集。 (2认同)

小智 219

您可以在列表中使用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
Run Code Online (Sandbox Code Playgroud)

  • 请注意,ElementAt()需要`using System.Linq;`. (23认同)
  • 这比标准的`myList [0]符号更有优势吗? (15认同)
  • "为什么我要使用Enumerable.ElementAt()和[]运算符?" /sf/ask/372881211/ (5认同)
  • @AnalogWeapon 是的 - 您可以将其用作空安全链的一部分,例如 `myCollectionWhichMightBeNull?.ElementAt(0)` 或防止不存在的元素:`myCollection.ElementAtOrDefault(0)?.SomeProperty` (5认同)
  • `.ElementAtOrDefault();` (3认同)

小智 24

Visual Basic,C#和C++都具有访问Item属性而不使用其名称的语法.而是使用包含List的变量,就像它是一个数组一样.

List[index]
Run Code Online (Sandbox Code Playgroud)

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


小智 18

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

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

var temp = list1["DesiredMember"];
Run Code Online (Sandbox Code Playgroud)

你知道的越多,对吧?


pic*_*ino 12

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

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

var firstElement = myList[0];
var secondElement = myList[1];
Run Code Online (Sandbox Code Playgroud)

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

var lastElement = myList[^1]; // Using Index
var fiveElements = myList[2..7]; // Using Range, note that 7 is exclusive
Run Code Online (Sandbox Code Playgroud)

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

var elementsFromThirdToEnd = myList[2..^0]; // Index and Range together
Run Code Online (Sandbox Code Playgroud)

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


Cod*_*ker 8

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

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