あなたのコメントに基づいて:
「static Item objA = new Item()」を数回作成すると、次のようになります。
static Item objA = new Item();
static Item objB = new Item();
....
static Item objZ = new Item();
次に、それらすべてをリストに入れるには、次の方法しかありません。
list = new List<Item>;
list.Add(objA);
list.Add(objB);
...
list.Add(objZ);
これは、すでにアイテムを作成しており、それらを数十の異なる変数に入れているためです。それらをリストに入れるには、どこからアイテムを取得する必要があるかをコンパイラーに伝える必要があります。つまり、objA 変数から、objB 変数から (...) などを取得するように指示する必要があります。これは、それらが異なる変数にあるためです。
ポイントは、最初に間違った方法を選択する必要があるということです。そもそも「objA、objB、objC、....、objZ」を作成してはいけません。一度にすべての項目に簡単にアクセスできるように、リスト、配列、辞書、または任意のコレクションにする必要があります。それらを別々の変数に入れるべきではありません。
可能であれば、変数を作成しないでください。たとえば、辞書を使用します。
Dictionary<string, Item> items = new Dictionary<string, Item>();
items["A"] = new Item();
items["B"] = new Item();
...
items["Z"] = new Item();
今、あなたは簡単にアイテムを作ることができます:
items["F"].Something = 321;
items["O"].Something = 123;
また、すべてのアイテムにも簡単にアクセスできます。
var number = items.Values.Count;
itemList = new List<Item>( items.Values );
もちろん、そのようなオプションがない場合もあります。たとえば、WinForms Designer は変数を作成します。フォームに 100 個のラベルを配置すると、ほとんどの場合、最終的に 100 個の変数になります (静的ではありません)。
それにもかかわらず、これらの変数はすべて何らかのクラスに属します。プロジェクトのセットアップで Reflection を使用できる場合は、そのクラスを検査して名前/プロパティのリストを取得し、それらの値を読み取ることができます。
class X
{
public static Item objA = new Item();
..., objB, objC, ..... ,.....,
}
...
List<Item> items = new List<Item>();
foreach (var field in typeof(ListaUczniow).GetFields(BindingFlags.Static | BindingFlags.Public))
if (field.Name.StartsWith("obj") && field.FieldType == typeof(Item))
items.Add( (Item) field.GetValue(null) );
これはうまくいくかもしれませんが、一般的に、これは非常に脆弱なアプローチです: 適切な BindingFlags、適切なフィールド名、適切なフィールド型に注意する必要があり、コンパイラは Item へのキャストを自動的にチェックできず、セキュリティ上の問題さえあるかもしれませんたとえば、Silverlight で記述し、フィールドが非公開の場合に発生します。