C#中Node类型List的索引操作:如何实现类似Java get(index)的功能?
问题原因
你触发错误是因为用错了方法:IndexOf(1)的作用是查找某个元素在列表里的索引位置,但你的array1存的是DNode类型对象,你传了个int类型的1,类型不匹配自然报错。
C#中对应Java
get(index)的实现 要获取List<T>指定索引的元素,C#里有两种直接的方式:
- 索引器语法:用
列表名[索引值],这是最常用的写法,和Java的get(index)功能完全一致。 ElementAt方法:调用列表名.ElementAt(索引值),不过这个方法需要你引用System.Linq命名空间。
修正后的代码
另外注意你原代码的循环会漏掉最后一个节点(因为只有temp.next != null时才添加节点),这里一起修正:
List<DNode> array1 = new List<DNode>(); DNode temp = doubleLinkedList.head; // 遍历所有节点,包括最后一个 while(temp != null) { array1.Add(temp); temp = temp.next; } // 获取指定索引的元素,比如索引1 return array1[1]; // 或者用ElementAt(需要顶部加using System.Linq;) // return array1.ElementAt(1);
内容的提问来源于stack exchange,提问作者G.Baysec
相关产品推荐
相关产品推荐

