C#等价于java arraylist,支持获取、设置和删除某些索引

C#等价于java arraylist,支持获取、设置和删除某些索引,c#,java,collections,arraylist,linked-list,C#,Java,Collections,Arraylist,Linked List,我是一名Java程序员,我以前使用过JavaArrayList,现在我想在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); arrayLi

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

使用
列表

它有
Add
Remove
RemoveAt
索引器,如
list[i]
等。

使用
list

String[]strs=新字符串[]{“str1”、“str2”、“str3”、“str4”};
List stringList=新列表();
stringList.add(strs[0]);
stringList.add(strs[1]);
stringList.RemoveAt(indexYouWantToDelete)
字符串s=stringList[0];
c#中的数组列表来自前泛型时代。自从C#2.0以来,我们就有了泛型集合,
List
就是一个例子。正如对此答案的评论所说,如果使用ArrayList,则必须将放入ArrayList中的元素装箱(到
对象
,因为这是ArrayList作为输入的唯一内容)。如果您想在此之后访问它们,则必须显式地解除它们的绑定,就像您在问题中所做的那样。(->
strings=(String)arrayList.get(1);

使用泛型集合(如
List
),不再需要装箱,因为编译器知道列表将由什么数据类型组成。在本例中,使用字符串。
你也可以有一个
列表
列表
,或者
列表
,你可以在它们上面使用相同的索引功能。

使用
列表
列表[索引]
和.wow这让人困惑;现在,通常认为列表是链接列表的简写,而不是连续集合。值得指出的是,不建议使用
ArrayList
,因为它是非泛型的,会导致装箱。谢谢!首先,我认为LinkedList比纯列表更高级,我没有注意到这一点。。。我理解通用数据类型是从C继承的,并且相当于C和C++中的模板。但非泛型数据类型的行为类似于对象,需要类型转换。非常感谢。以下是C#与java泛型和C模板之间的区别:。
 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];