21

我是一名 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# 中是否有另一个选项支持使用索引访问对象、插入和删除某个索引?

4

2 回答 2

29

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

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

于 2012-09-09T20:24:50.303 回答
2

使用List<T>..................................................

其中有Add RemoveRemoveAt索引器之类的list[i]

于 2012-09-09T20:23:35.830 回答