C# 为什么在类名后面加?

C# 为什么在类名后面加?,c#,C#,类名后面的类有什么用。比如说 public class Foo<TFooSomething,string> where TFooSomething :class { public Foo(IBoo<TBooSomething> boo) : base(boo) { //code goes here } } 如果只是为了声明参数类型,我们就不能在构造函数中声明它们吗 它是一种泛型类型,在内容可以是不同类型的类中非常有用。一个很好的

类名后面的类有什么用。比如说

public class Foo<TFooSomething,string> where TFooSomething :class {

    public Foo(IBoo<TBooSomething> boo) : base(boo)
    {
       //code goes here
    }
} 

如果只是为了声明参数类型,我们就不能在构造函数中声明它们吗

它是一种泛型类型,在内容可以是不同类型的类中非常有用。一个很好的例子是List,其中T指定列表中的元素属于什么类型。当然,您可以使用非泛型类型,如ArrayList,但这意味着当您访问列表中的元素时,您将不知道其类型。当然,您可以创建一个非泛型列表类型,将元素类型作为构造函数的参数,但这只是意味着需要在运行时进行类型检查,而不是依赖于C的类型检查。

在cTry中查找泛型来编写LINQ Select的实现,而不使用泛型并使用它,这将变得很清楚:顺便说一句:类名后面不能跟花括号,这甚至不会编译。