按索引获取列表项

时间:2013-03-17 02:05:56

标签: c# list

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

list1.get(0);

c#中的等价物是什么?

7 个答案:

答案 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)

.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%的情况,这确实不是必需的,只是性能缓慢的解决方案。

答案 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);
        }
    }