-1

追加方法

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

からList<string> groupNames?

4

3 に答える 3

3

通常、配列に追加することはできません。配列は、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();
于 2013-01-17T06:58:22.927 に答える
0

リストのメソッドを機能させようとするか、ToArray次のようなより古典的なアプローチを使用できます(コンパイルしようとしなかったため、調整が必要になる場合があります)

GroupAtributes[] myArray = new GroupAttribute[groupNames.Count]

int i=0; 
foreach(var name in groupNames)
{
    myArray[i++] = new GroupAttribute { value = name };
}
于 2013-01-17T07:02:33.240 に答える
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); を呼び出すだけです。

于 2013-01-17T07:02:38.657 に答える