非一般的な方法でGraphicsItemの配列を作成しようとしていますか?
あなたは、次の操作を行うことはできません。
static void foo()
{
var _bar = List<GraphicsItem<T>>();
}
し、後でリストを埋めます。
おそらくあなたはこのようなことをしようとしていますか?
static GraphicsItem<T>[] CreateArrays<T>()
{
GraphicsItem<T>[] _foo = new GraphicsItem<T>[1];
// This can't work, because you don't know if T == typeof(string)
// _foo[0] = (GraphicsItem<T>)new GraphicsItem<string>();
// You can only create an array of the scoped type parameter T
_foo[0] = new GraphicsItem<T>();
List<GraphicsItem<T>> _bar = new List<GraphicsItem<T>>();
// Again same reason as above
// _bar.Add(new GraphicsItem<string>());
// This works
_bar.Add(new GraphicsItem<T>());
return _bar.ToArray();
}
ジェネリック型の配列を作成するには、ジェネリック型の参照が必要です。これは、メソッドレベル(メソッドの後のTを使用)またはクラスレベル(クラスの後にTを使用)で行うことができます。
GraphicsItemとGraphicsItemの配列を返すメソッドを使用する場合は、GraphicsItemに汎用ではない基本クラスGraphicsItemを継承させ、その配列を返します。あなたはすべてのタイプの安全性を失うでしょう。
希望に役立ちます。