为什么列表<标签>变量声明不起作用
本文关键字:变量 声明 不起作用 标签 列表 为什么 | 更新日期: 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
}