Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么要列出<;T>;标签变量声明不起作用?_C#_List_Generics - Fatal编程技术网

C# 为什么要列出<;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) { } } 谢谢你的帮助 我不知道为什么有人否

在我的类变量中,当我声明以下任一项时,编译器会抱怨T。 我还包括了泛型名称空间

 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.