C#:隐式数组列表赋值是否可行?
我希望通过指定一个值列表来填充arraylist,就像我填充整数数组一样,但是我不确定如何在不重复调用“add”方法的情况下填充arraylist 例如,我想将{1,2,3,“string1”,“string2”}分配给arraylist。我知道对于其他阵列,您可以进行如下分配:C#:隐式数组列表赋值是否可行?,c#,arraylist,C#,Arraylist,我希望通过指定一个值列表来填充arraylist,就像我填充整数数组一样,但是我不确定如何在不重复调用“add”方法的情况下填充arraylist 例如,我想将{1,2,3,“string1”,“string2”}分配给arraylist。我知道对于其他阵列,您可以进行如下分配: int[] IntArray = {1,2,3}; 对于arraylist有类似的方法吗?我尝试了addrange方法,但大括号方法没有实现ICollection接口。数组列表有一个接受ICollection的cto
int[] IntArray = {1,2,3};
对于arraylist有类似的方法吗?我尝试了addrange方法,但大括号方法没有实现ICollection接口。数组列表有一个接受ICollection的ctor,ICollection由数组类实现
object[] myArray = new object[] {1,2,3,"string1","string2"};
ArrayList myArrayList = new ArrayList(myArray);
根据您使用的C#版本的不同,您有不同的选择 C#3.0具有集合初始值设定项,详细信息见 这是你的问题的一个例子
ArrayList list = new ArrayList {1,2,3};
如果您正在初始化集合对象,大多数构造函数都会将类似的组件带到AddRange,尽管正如您所提到的,这可能不是一个选项。我假设您没有使用C#3.0,它具有集合初始值设定项。如果您不担心创建临时数组的开销,可以在1.1/2.0中这样做:
ArrayList list = new ArrayList(new object[] { 1, 2, 3, "string1", "string2"});
(有点回答我自己的问题,但是…)
我发现最接近我想要的是使用ArrayList.Adapter方法:
object[] values = { 1, 2, 3, "string1", "string2" };
ArrayList AL = new ArrayList();
AL = ArrayList.Adapter(values);
//or during intialization
ArrayList AL2 = ArrayList.Adapter(values);
这足以满足我的需要,但我希望它可以在一行中完成,而不必像其他人建议的那样创建临时数组。您的评论意味着您选择了ArrayList,因为它是您找到的第一个组件 假设您只是在寻找整数列表,这可能是最好的方法
List<int> list = new List<int>{1,2,3};
List List=新列表{1,2,3};
如果您使用的是C#2.0(它有泛型,但没有集合初始值设定项)
List List=newlist(newint[]{1,2,3});
尽管int[]格式在旧版本中可能不正确,但您可能必须指定数组中的项数。请解释为什么要使用ArrayList,而不是现代集合。我对使用C比较陌生,ArrayList集合是我学会使用的第一个集合。如果您对我可以使用什么有更好的建议,我很乐意听到。如果您必须支持/维护1.1应用程序,则可能不存在“现代”集合。正如下面所述,一个更简单的版本可能是:ICollection=new MyType[]{myType1,myType2};
List<int> list = new List<int>(new int[] {1, 2, 3});