C#中的继承,T:new()的含义是什么
本文关键字:是什么 new 继承 | 更新日期: 2023-09-27 18:29:01
可能重复:
new()是什么意思?
就像标题一样。我想知道代码中的语法是什么意思。我在一些样品中发现了它,但没有解释,我真的不知道它是干什么的。
public class SomeClass<T> where T: new() // what does it mean?
有人能为我解释一下吗?
也许你的意思是你看到了沿着这些线的东西?
public class SomeClass<T> where T: new()
{...}
这意味着您只能使用具有公共无参数构造函数的类型T的泛型类。这些被称为泛型类型约束。也就是说,你不能这样做(见CS0310):
// causes CS0310 because XmlWriter cannot be instantiated with paraless ctor
var someClass = new SomeClass<XmlWriter>();
// causes same compile error for same reason
var someClass = new SomeClass<string>();
你为什么需要这样的约束?假设您想实例化一个类型为T
的新变量。只有当您有这个约束时,才能这样做,否则,编译器无法事先知道实例化是否有效。即:
public class SomeClass<T> where T: new()
{
public static T CreateNewT()
{
// you can only write "new T()" when you also have "where T: new()"
return new T();
}
}
它是一个泛型类型约束,意味着泛型类型必须有一个公共的无参数构造函数。
您的代码示例甚至不会编译。
正确的语法是:
SomeClass<T> where T : new()
您还没有发布完整的代码行,因为这不会编译,但这是泛型中的一个约束。这是MSDN的文章。