Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:隐式数组列表赋值是否可行?_C#_Arraylist - Fatal编程技术网

C#:隐式数组列表赋值是否可行?

C#:隐式数组列表赋值是否可行?,c#,arraylist,C#,Arraylist,我希望通过指定一个值列表来填充arraylist,就像我填充整数数组一样,但是我不确定如何在不重复调用“add”方法的情况下填充arraylist 例如,我想将{1,2,3,“string1”,“string2”}分配给arraylist。我知道对于其他阵列,您可以进行如下分配: int[] IntArray = {1,2,3}; 对于arraylist有类似的方法吗?我尝试了addrange方法,但大括号方法没有实现ICollection接口。数组列表有一个接受ICollection的cto

我希望通过指定一个值列表来填充arraylist,就像我填充整数数组一样,但是我不确定如何在不重复调用“add”方法的情况下填充arraylist

例如,我想将{1,2,3,“string1”,“string2”}分配给arraylist。我知道对于其他阵列,您可以进行如下分配:

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});