2017-02-27 9 views
0

ToArray()によって作成された配列に単一のアイテムを追加しようとしていますが、残念ながら新しいオブジェクトを追加するための有効な方法が見つかりませんでした。新しいオブジェクトの連結

List<MyObject> MyList = new List<MyObject>(); 
MyList.Add(new MyObject { MyParam = "1" }); 

MyList.ToArray().Concat(new MyObject { MyParam = "2" }); 

新しいMyObjectを直接連結することはできないようですが、これを行う方法はありますか?

私は配列を作成し、配列Aを配列Bに追加するためにconcatを使用することができますが、私の完全な実装では、Concatメソッドの下に新しいオブジェクトを作成する必要があります。

多分、Concatは正しい方法ではありませんか?どんなヒントも高く評価されます。

+2

配列はサイズ変更できません。配列の代わりに 'List 'を使うべきです。 – SLaks

+1

あなたは1つのインデックスでそれらを組み合わせていますか? MyListは既にMyObjectのリストです。それ以上のものを追加しようとするなら、MyList.Add(新しいMyObject {MyParam = "2"})に移動してください。 – jmag

+0

'MyList.ToArray()'呼び出しを 'MyList.ToList()'呼び出しで置き換え、 'List.Add'メソッドを使って項目を追加したいかもしれません – Vikhram

答えて

0

あなたの質問から、正確に何をしようとしているのかは不明です。サイズ変更可能な順序付けされたコレクションが必要な場合は、配列よりもList<T>を使用するほうがよいです。アイテムを追加するには、Add()を呼び出します。

投稿したコードでは、Concat()メソッドは、新しい列挙可能オブジェクトを返す拡張メソッドです。オリジナルは変更されません。あなたはこれにそれを好むかもしれないなぜ、私は知らない

MyObject[] array = MyList.Concat(new [] { new MyObject { MyParam = "2" } }).ToArray(); 

MyList.Add(new MyObject{ MyParam = "2" }); 
MyObject[] array = MyList.ToArray(); 

は思えあなたは配列をしたい、とあなたが本当にConcat()を使用したい場合は、このような何かを行うことができます後者はより効率的で、実際に何をしているのかをより明確に表現しているので、後者が優れていることがわかります。

あなたが本当にアレイとのみ配列をしたい場合は

、あなたは Array.Resize()を使用することができます。

MyObject[] array = new [] { new MyObject { MyParam = "1" } }; 

Array.Resize(ref array, array.Length + 1); 
array[array.Length - 1] = new MyObject { MyParam = "2" }; 

私は強くそのようなコードの使用を阻止します。サイズ変更可能なコレクションを管理するのは非常に非効率的な方法です。しかし、それはうまく動作し、あなたがという仕様に最も密接に従っているのは、と思われます。

あなたの懸念に対処するための十分な情報が不足している場合は、それを編集して内容をより明確に説明してください。do

関連する問題