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