我是一名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#ArrayList
和LinkedList
,但它们没有我需要的这些简单选项。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>
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
它具有Add
、Remove
、RemoveAt
索引器,如list[i]
等。