C# 为什么要列出<;T>;标签变量声明不起作用?
在我的类变量中,当我声明以下任一项时,编译器会抱怨T。 我还包括了泛型名称空间C# 为什么要列出<;T>;标签变量声明不起作用?,c#,list,generics,C#,List,Generics,在我的类变量中,当我声明以下任一项时,编译器会抱怨T。 我还包括了泛型名称空间 class xyz { List<T> Labels = null; List<T> Labels = new List<T>(); public void abc (int a) { } } xyz类 { 列表标签=空; 列表标签=新列表(); 公共空间abc(INTA) { } } 谢谢你的帮助 我不知道为什么有人否
class xyz
{
List<T> Labels = null;
List<T> Labels = new List<T>();
public void abc (int a)
{
}
}
xyz类
{
列表标签=空;
列表标签=新列表();
公共空间abc(INTA)
{
}
}
谢谢你的帮助
我不知道为什么有人否决了我的问题?不是所有人都是高级C#,.NET程序员。在提出这个问题之前,我做了研究,这里的大卫感到困惑,现在我要去学习泛型 泛型不是这样工作的。您仍然必须为其提供实际类型。此符号:
List<T>
或某种自定义类型的列表
:
List<MyCustomClass>
列表
等等
泛型仍然与C#中的任何其他类型一样是静态类型,因此编译器需要知道类型。
T
是要从中生成列表的数据类型的占位符。参见示例
publicstaticvoidmain()
{
列出恐龙=新列表();
Console.WriteLine(“\n容量:{0}”,恐龙.Capacity);
恐龙。添加(“暴龙”);
恐龙。添加(“Amargasaurus”);
恐龙。添加(“马门基龙”);
恐龙。添加(“Deinonychus”);
恐龙。添加(“Compsognatus”);
您在这里为类xyz定义了一个泛型字段。该类本身也必须是泛型的,以便编译器了解T
class xyz<T>
{
List<T> Labels = null;
// more stuff
}
xyz类
{
列表标签=空;
//更多的东西
}
类xyz//T是一种需要在某个地方具体化的类型,因此如果您需要泛型类级别字段,那么您的类也需要是泛型的
{
列表标签=空;
列表标签=新列表();
公共空间abc(INTA)
{
}
}
当然,一如既往,这取决于你想做什么!你可能只是我们想要的
List<string> Labels = new List<string>(); or similar.
List Labels=new List();或类似内容。
那么这里的T
是什么呢?在一个泛型类中,T
是一个类型参数,这样就可以了。编译器实际上希望您首先告诉它T
是什么。您的意思是List
标签=newlist
?您需要告诉它T
is@Jon飞碟,弗雷德里克·哈米迪我想从所有这些回答中,我需要研究C语言中的T。我认为自己是一个初学者.NET,C语言。从我得到的所有答复中,我仍然不知道:1)如何定义t。我认为t意思是在这里接受任何类型。但是显然它并不意味着。我不知道为什么在这个问题上有人给了我一个-1。925:基本上你应该阅读C#中的泛型。任何一本像样的C#2+书籍都应该涵盖它们。
class xyz<T>
{
List<T> Labels = null;
// more stuff
}
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.