.NETは、パフォーマンスがほぼ同じである汎用リストコンテナを提供します(配列とリストのパフォーマンスの質問を参照)。ただし、初期化はまったく異なります。
配列はデフォルト値で非常に簡単に初期化でき、定義上、すでに特定のサイズがあります。
string[] Ar = new string[10];
これにより、ランダムなアイテムを安全に割り当てることができます。
Ar[5]="hello";
リストを使用すると、物事はよりトリッキーになります。同じ初期化を行う2つの方法がわかりますが、どちらもエレガントとは言えません。
List<string> L = new List<string>(10);
for (int i=0;i<10;i++) L.Add(null);
また
string[] Ar = new string[10];
List<string> L = new List<string>(Ar);
よりクリーンな方法は何でしょうか?
編集:これまでの回答は容量に関するものであり、これはリストの事前入力以外のものです。たとえば、容量が10で作成されたばかりのリストでは、実行できません。L[2]="somevalue"
編集2:人々は、リストが意図された方法ではないので、なぜ私がこのようにリストを使用したいのか疑問に思います。私は2つの理由を見ることができます:
リストは「次世代」の配列であり、ほとんどペナルティなしで柔軟性を追加していると非常に説得力のある主張をすることができます。したがって、デフォルトでそれらを使用する必要があります。初期化するのは簡単ではないかもしれないと指摘しています。
私が現在書いているのは、より大きなフレームワークの一部としてデフォルトの機能を提供する基本クラスです。私が提供するデフォルトの機能では、リストのサイズは高度にわかっているため、配列を使用することもできます。ただし、基本クラスに動的に拡張する機会を提供したいので、リストを選択します。