1

ジェネリックTList型を定義して、その型の変数を宣言し、それに特殊化を割り当てるにはどうすればよいTList<>ですか?

この変数を宣言したい:

var
  MyList:THowToDeclareThisListType<T>;

そして、次のようにインスタンス化します。

MyList:=THowToDeclareThisListType<integer>.Create;

また

MyList:=THowToDeclareThisListType<double>.Create;

など。ここでかなり明白な何かが欠けているに違いありません。クラスは必要ありません。単純な型定義だけです。

4

1 に答える 1

5

次のような変数を宣言しようとしています。

var
  List: TList<?>;

タイプorまたはのオブジェクトを割り当てることListができます。TList<Integer>TList<Double>TList<string>

それは不可能です。ジェネリック型を使用して変数を定義する場合、型は完全にインスタンス化されている必要があります。

タイプの任意のオブジェクトを保持する変数を持つことができる唯一の方法はTList<T>、変数が共通の基底クラスを持つように宣言されている場合ですTList<T>。また、共通基本クラスは、インスタンス化されていないジェネリックにすることはできません。可能な唯一のTList<T>共通基本クラスはTObject.

だからあなたは書くことができます

var
  List: TObject;

次に、任意のオブジェクトを に割り当てますList。しかし、それが非常に役立つかどうかはわかりません。

于 2013-03-28T17:01:05.743 に答える