多分それはかなり単純ですが、私はその型Type
とその用途に慣れていません。
関数の結果に応じて、=または=のList<T>
いずれかを作成したいとします。T
Double
T
UInt32
public static Type CheckType(String input);
コード内:
Type t = Program.CheckType(someInput); // it returns typeof(Double) or typeof(UInt32)
if (t == typeof(Double))
List<Double> l = new List<Double>();
else
List<UInt32> l = new List<UInt32>();
l
2つの異なる意味(doubleのリストとunsigned intのリスト)を許可しているため、上記のコードがコンパイルされないことはわかっています...だから、私の質問につながります:
if
上記のコードを回避する方法はありますか?
これに似たもの:
Type t = Program.CheckType(someInput);
List<t> l = new List<t>(); // I know this won't compile either...
つまり、一般的なリストを一般的にインスタンス化します...
前もって感謝します!
編集:
これは、マークされた質問の複製ではありません。理由は 1 つだけです。匿名タイプではありません。ここでの問題は、入力データの型(たとえば、=または= ) を決定し、その入力データ型に基づいてジェネリックを作成する方法です。Double
UInt32
Type T
typeof(Double)
Type T
typeof(UInt32)
SampleClass<T>
T
つまり、実行時に someType T
を決定し、決定された type でジェネリック型をインスタンス化しますT
。前にそれを明確にしなかった場合は申し訳ありません...
PS:List<T>
の例として使用しましたSampleClass<T>
。