C#等效于java数组列表,支持获取,设置和删除某些索引

2022-09-01 23:10:53

我是一名Java程序员,我以前使用过Java,现在我想在C#中拥有类似的东西。我需要的一些选项在这个Java代码中:ArrayList

String[] strs = new String[]{"str1" , "str2" , "str3" , "str4"};
ArrayList arrayList = new ArrayList(35);
arrayList.add(strs[0]);
arrayList.add(strs[1]);
arrayList.remove(0);
arrayList.set(0, strs[2]);
String s = (String) arrayList.get(1);

我使用了 C# 和 ,但它们没有我需要的这些简单选项。C# 中是否有另一个选项支持访问具有索引的对象,插入和删除某些索引?ArrayListLinkedList


答案 1

List <T>

 String[] strs = new String[]{"str1" , "str2" , "str3" , "str4"};
 List<string> stringList = new List<string>();
 stringList.add(strs[0]);
 stringList.add(strs[1]);
 stringList.RemoveAt(indexYouWantToDelete)     
 String s = stringList[0];

c# 中的 ArrayList 来自前泛型时代。从 C# 2.0 开始,我们有泛型集合,就是一个例子。正如对此答案的评论所说,如果您使用ArrayList,则放入数组列表中的元素必须装箱(to ,因为这是ArrayList唯一接受的输入)。如果您想在之后访问它们,则必须明确取消包装它们,就像您在问题中所做的那样。( -->List <T>ObjectString s = (String) arrayList.get(1); )

使用泛型集合(如 ),不再有装箱,因为编译器知道列表将包含什么数据类型。在本例中为字符串。还可以有 、 或 ,并且可以对它们使用相同的索引功能。List <T>List<int>List<char>List<whatever>


答案 2

用。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。List<T>

其中有,索引器等。AddRemoveRemoveAtlist[i]