准备"用C#编程"来自目标2.1的this书籍的认证,其中显示了以下代码的通用类型:
class MyClass<T> where T : class, new()
{
public MyClass()
{
MyProperty = new T();
}
T MyProperty { get; set; }
}
我知道泛型类型是什么以及我们为什么需要它,但任何人都可以解释这个令人困惑的代码以及我们如何在任何示例中使用它。
答案 0 :(得分:1)
我想你不明白这一部分:
where T:class,new()
这表示T
必须是引用类型(即类),并且它必须具有默认构造函数(不带参数的构造函数)。这意味着T
不能int
,因为它是一个结构。它也不能是StreamReader
,因为它没有默认的构造函数。
为什么这有用?
某些内容只能用于引用类型,而不能用于值类型,例如as
。因为你说T
必须有一个默认的构造函数,你可以这样做:
public MyClass()
{
MyProperty = new T();
}
T MyProperty { get; set; }
由于T
必须有默认构造函数,因此您可以调用new T()
。