为什么List <t>标签变量声明不起作用?</t>

时间:2013-10-17 15:30:06

标签: c# list generics

在我的类变量中,当我声明以下任何一个编译器抱怨T. 我也包含了Generics命名空间

 class xyz
 {

    List<T> Labels = null; 

    List<T> Labels = new List<T>();

    public void abc (int a)
    {

    }

 }

感谢您的帮助。

我不知道为什么有人投票支持我的问题?并非所有人都是高级C#,.NET程序员。在把问题提到这里之前我做了我的研究,大卫在这里得到了我的困惑,现在我要去了解仿制药。

4 个答案:

答案 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
}