在我的类变量中,当我声明以下任何一个编译器抱怨T. 我也包含了Generics命名空间
class xyz
{
List<T> Labels = null;
List<T> Labels = new List<T>();
public void abc (int a)
{
}
}
感谢您的帮助。
我不知道为什么有人投票支持我的问题?并非所有人都是高级C#,.NET程序员。在把问题提到这里之前我做了我的研究,大卫在这里得到了我的困惑,现在我要去了解仿制药。
答案 0 :(得分:4)
这不是泛型如何运作的。您仍然需要提供实际类型。这种表示法:
List<T>
基本上是指“ 的List
。”你必须告诉它什么是东西。例如,如果它是List
个字符串:
List<string>
或某个自定义类型的List
:
List<MyCustomClass>
等
泛型仍然像C#中的其他任何内容一样静态类型,因此编译器需要知道类型。
答案 1 :(得分:2)
T
是您想要列出的数据类型的占位符。请参阅示例here
public static void Main()
{
List<string> dinosaurs = new List<string>();
Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);
dinosaurs.Add("Tyrannosaurus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Mamenchisaurus");
dinosaurs.Add("Deinonychus");
dinosaurs.Add("Compsognathus");
答案 2 :(得分:1)
class xyz<T> //T is a type that needs to be made concrete somewhere, so if you need a generic class level field your class also needs to be generic
{
List<T> Labels = null;
List<T> Labels = new List<T>();
public void abc(int a)
{
}
}
当然,一如既往,取决于你尝试做什么!,你可能只想要
List<string> Labels = new List<string>(); or similar.
答案 3 :(得分:0)
您在此处为类xyz定义通用字段。类本身也必须是通用的,因此编译器知道T
class xyz<T>
{
List<T> Labels = null;
// more stuff
}