考虑到泛型限制的话题,我不明白构造函数限制的实际应用是什么。这是一个班级的例子,比如一个学生:
class Student
{
public Student(){}
}
这是通用类:
class Class2<T> where T : new()
{
public T typeTinClass2;
public Class2()
{
typeTinClass2 = new T();
}
}
让我们说一下程序的其他一些琐碎的调用部分:
class Program
{
static void Main()
{
Class2<Student> vasiliy = new Class2<Student>();
}
}
问题很简单——在什么实际情况下可以使用它?假设对类和接口有限制,为什么要理解它们并不难,因为什么时候以及如何使用它马上就清楚了。但是如何使用构造函数约束呢?是的,可以在通用代码中创建传递给 <> 的这种类型的类的实例,我也理解存在例如这种可能性:
Console.WriteLine(vasiliy.typeTinClass2.someField);
但在什么情况下可能需要这样做?为了让我对构造函数使用约束,我应该面对什么任务?
例如,当描述具有某种方法的工厂类时
T CreateObj<T>()如果你不设置这个限制,那么你将无法调用方法内部的方法
new=> 你将不得不访问没有参数的构造函数,这可能不存在 => 程序可能会崩溃。