为什么列表<标签>变量声明不起作用

本文关键字:变量 声明 不起作用 标签 列表 为什么 | 更新日期: 2023-09-27 18:36:00

在我的类变量中,当我声明以下任一时,编译器抱怨T。我也包含了泛型命名空间

 class xyz
 {
    List<T> Labels = null; 
    List<T> Labels = new List<T>();
    public void abc (int a)
    {
    }
 }

感谢您的帮助。

我不知道为什么有人投票否决了我的问题? 并非所有人都是高级C#,.NET程序员。 在把问题放在这里之前,我做了研究,大卫在这里得到了我的困惑,现在我要去学习泛型。

为什么列表<标签>变量声明不起作用

这不是泛型的工作方式。 您仍然必须为其提供实际类型。 此表示法:

List<T>

基本上意味着"某物List"。 你必须告诉它那是什么东西。 例如,如果它是字符串List

List<string>

或某种自定义类型的List

List<MyCustomClass>

等。

泛型仍然像 C# 中的其他任何东西一样静态类型化,因此编译器需要知道类型。

T 是要从中生成列表的数据类型的占位符。请参阅此处的示例

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");
    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.

您在此处为类 xyz 定义一个通用字段。类本身也必须是泛型的,以便编译器知道 T

class xyz<T>
{
    List<T> Labels = null;
    // more stuff
}