C#等价于支持get、set和remove特定Index的java arraylist



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

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#ArrayListLinkedList,但它们没有我需要的这些简单选项。C#中是否还有其他选项支持访问带有索引的对象,插入和删除某些索引?

使用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#中的ArrayLists来自前泛型时代tho。由于C#2.0,我们有泛型集合,List <T>就是一个例子。正如对这个答案的评论所说,如果你使用ArrayList,那么你放入ArrayList的元素将必须被装箱(到Object,因为这是ArrayList唯一的输入)。如果你想在那之后访问它们,它们必须被明确地开箱,就像你在问题中所做的那样。(-->String s = (String) arrayList.get(1);

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

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

它具有AddRemoveRemoveAt索引器,如list[i]等。

最新更新