如何添加到
GroupAtributes = new GroupAttribute[]
{
new GroupAttribute { value = groupName },
new GroupAttribute { value = groupName },
new GroupAttribute { value = groupName }
};
来自List<string> groupNames
?
答案 0 :(得分:3)
通常,您无法添加到数组中。该数组被分配用于容纳三个项目。如果要添加更多项目,则必须调整阵列大小以使其包含更多项目。查看Array.Resize了解更多信息。
但为什么不用List<GroupAttributes>
替换那个数组呢?您可以将其构建为列表,然后如果您确实需要数组,则可以在列表中调用ToArray
。
这样做你想要的吗?
List<GroupAttribute> attrList = new List<GroupAttributes>();
// here, put a bunch of items into the list
// now, create an array from the list.
GroupAttribute[] attrArray = attrList.ToArray();
最后一个语句从列表中创建一个数组。
编辑:我觉得你可能想要这样的东西:
var GroupAttributes = (from name in groupNames
select new GroupAttribute{value = name}).ToArray();
答案 1 :(得分:0)
我会尝试让列表的ToArray
方法正常工作,或者您可以使用更经典的方法,例如(我没有尝试编译,因此可能需要调整)
GroupAtributes[] myArray = new GroupAttribute[groupNames.Count]
int i=0;
foreach(var name in groupNames)
{
myArray[i++] = new GroupAttribute { value = name };
}
答案 2 :(得分:0)
数组并非设计用于“添加”,但如果您不希望列表分配内存(通常以牺牲速度为代价),则它有其用途。
public void Add<T>(ref T[] ar, List<T> list)
{
int oldlen = ar.Length;
Array.Resize<T>(ref ar, oldlen + list.Count);
for (int i = 0; i < list.Count; ++i)
{
ar[oldlen + i] = list[i];
}
}
然后只需调用Add(ref attrs,myAttrsList);