我想通过指定一个值列表来填充一个arraylist,就像我将整数数组一样,但是如果不重复调用“add”方法,我不确定如何这样做。
例如,我想将{1,2,3,“string1”,“string2”}分配给一个arraylist。我知道对于其他数组,您可以进行如下任务:
int[] IntArray = {1,2,3};
是否有类似的方法为arraylist执行此操作?我尝试了addrange方法,但大括号方法没有实现ICollection接口。
答案 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);
这足以满足我的需要,但我希望它可以在一行中完成,而不像其他人建议的那样创建临时数组。