C#:隐式Arraylist赋值是否可行?

时间:2008-09-17 21:41:29

标签: c# arraylist

我想通过指定一个值列表来填充一个arraylist,就像我将整数数组一样,但是如果不重复调用“add”方法,我不确定如何这样做。

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

int[] IntArray = {1,2,3};

是否有类似的方法为arraylist执行此操作?我尝试了addrange方法,但大括号方法没有实现ICollection接口。

5 个答案:

答案 0 :(得分:14)

根据您使用的C#版本,您有不同的选择。

C#3.0有集合初始值设定项,详见Scott Gu's Blog

以下是您的问题示例。

ArrayList list = new ArrayList {1,2,3};

如果你正在初始化一个集合对象,那么大多数都有类似于AddRange组件的构造函数,尽管你提到这可能不是一个选项。

答案 1 :(得分:7)

数组列表的ctor接受ICollection,它由Array类实现。

object[] myArray = new object[] {1,2,3,"string1","string2"};
ArrayList myArrayList = new ArrayList(myArray);

答案 2 :(得分:1)

您的评论意味着您选择了ArrayList,因为它是您找到的第一个组件。

假设您只是在寻找整数列表,这可能是最好的方法。

List<int> list = new List<int>{1,2,3};

如果您使用的是C#2.0(其中包含泛型,但不是集合初始值设定项)。

List<int> list = new List<int>(new int[] {1, 2, 3});

虽然在旧版本中int []格式可能不正确,但您可能必须指定数组中的项目数。

答案 3 :(得分:0)

我假设您没有使用具有集合初始值设定项的C#3.0。如果你不打算创建一个临时数组的开销,你可以在1.1 / 2.0中这样做:

ArrayList list = new ArrayList(new object[] { 1, 2, 3, "string1", "string2"});

答案 4 :(得分:0)

(回答我自己的问题,但......)

我发现最接近我想要的是使用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);

这足以满足我的需要,但我希望它可以在一行中完成,而不像其他人建议的那样创建临时数组。