C#等价于java arraylist,支持获取、设置和删除某些索引
我是一名Java程序员,我以前使用过JavaC#等价于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
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];