質問

の違いは何ですか 範囲の追加 そして 連結 汎用リスト上の関数?どちらか一方が他方よりも推奨されますか?

役に立ちましたか?

解決

それらはまったく異なるセマンティクスを持っています。

AddRange は、他の項目をリストに追加してリストを変更します。

Concat は、リストを変更せずに、リストとその他の項目を含む新しいシーケンスを返します。

必要なセマンティクスを持つものを選択してください。

他のヒント

大きな違いは、AddRange が呼び出されるリストを変更するのに対し、Concat は新しいリストを作成することです。したがって、それらにはさまざまな用途があります。

また、Concat は、任意の IEnumerable に適用され、新しい List を生成するには .ToList() が必要な IEnumerable を返す拡張メソッドです。

既存のリストの内容を拡張する場合は、AddRange を使用します。

2 つの IEnumerable ソースから新しいリストを作成する場合は、Concat と .ToList を使用します。これには、どちらのソースも変異させないという性質があります。

2 つの List (または他の IEnumerable) の内容を列挙する必要があるだけの場合は、毎回 Concat を使用するだけです。これには、統合リストを保持するために実際に新しいメモリを割り当てないという利点があります。

これら 2 つの構造の違いとそのパフォーマンスの比較について説明している興味深い記事を見つけました。

主なアイデアは、大きなサイズのコレクションの場合、AddRange がはるかに高速であるということです。

ここにあります リンク

お役に立てれば、

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top