我最近开始使用从Java迁移的c#。我似乎无法找到如何通过索引获取列表项。在java中获取列表的第一项,它将是:
list1.get(0);
c#中的等价物是什么?
答案 0 :(得分:307)
list1[0];
假设列表的类型定义了索引器。
答案 1 :(得分:204)
您可以在列表中使用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
答案 2 :(得分:24)
Visual Basic,C#和C ++都具有访问Item属性而不使用其名称的语法。而是使用包含List的变量,就像它是一个数组一样。
List[index]
参见例如: https://msdn.microsoft.com/en-us/library/0ebtbkkc(v=vs.110).aspx
答案 3 :(得分:18)
老问题,但我看到这个帖子最近才活跃起来,所以我会继续投入我的两分钱:
正如米奇所说的那样。假设正确编制索引,您可以继续使用方括号表示法,就像访问数组一样。但是,除了使用数字索引之外,如果您的成员具有特定名称,您通常可以通过键入以下内容来同时进行搜索/访问:
var temp = list1["DesiredMember"];
你知道的越多,对吧?
答案 4 :(得分:4)
因此,您可以使用索引来访问其元素,例如:
var firstElement = myList[0];
var secondElement = myList[1];
从 C#8.0 开始,您可以使用Index
和Range
类来访问元素。它们提供从序列末尾的访问,或者只是访问序列的特定部分:
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%的情况,这确实不是必需的,只是性能缓慢的解决方案。
答案 5 :(得分:3)
您可以使用索引来访问列表元素
List<string> list1 = new List<string>();
list1[0] //for getting the first element of the list
答案 6 :(得分:1)
这是我的代码。该代码使用一个列表框和选择按钮。 用于根据列表框selectedItem在列表中选择元素的ElementAt():
public class Test
{
private struct Data
{
public int Id { get; set; }
public string Text { get; set; }
}
private List<Data> data = null;
private Data SelDataReg { get; set; } = null;
private void Start()
{
this.data = new List<Data>
{
new Data{ Id = 0, Text = "Reg 0" }
, new Data{ Id = 1, Text = "Reg 1" }
, new Data{ Id = 2, Text = "Reg 2" }
, new Data{ Id = 3, Text = "Reg 3" }
};
// ListBox
this.ListBoxControl.DisplayMember = "Text";
this.ListBoxControl.DataSource = this.data;
}
private void ButSelect_Click(object sender, EventArgs e)
{
if(this.ListBoxControl.SelectedIndex == -1) return;
this.SelDataReg = this.data.ElementAt(this.ListBoxControl.SelectedIndex);
MessageBox.Show("Okay, you are selected " + this.SelDataReg.Text);
}
}