从列表添加到数组<;字符串>;

本文关键字:lt 字符串 gt 数组 列表 添加 | 更新日期: 2023-09-27 17:53:44

如何添加到

GroupAtributes = new GroupAttribute[]
{
    new GroupAttribute { value = groupName },
    new GroupAttribute { value = groupName },
    new GroupAttribute { value = groupName }
};

来自List<string> groupNames

从列表添加到数组<;字符串>;

通常情况下,不能添加到数组中。数组被分配用于容纳三个项目。如果你想添加更多的项目,你必须调整数组的大小,以便它能容纳更多的项目。查看数组。调整大小以获取更多信息。

但是为什么不直接用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();

我会尝试让列表的ToArray方法工作,或者你可以使用更经典的方法,比如(我没有尝试编译,所以它可能需要调整(

GroupAtributes[] myArray = new GroupAttribute[groupNames.Count]
int i=0; 
foreach(var name in groupNames)
{
    myArray[i++] = new GroupAttribute { value = name };
}

数组不是为"添加"而设计的,但如果您不希望列表过度分配内存(通常以牺牲速度为代价(,它也有其用途。

    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(;