泛型中的new关键字的约束的函数
- 一般用于泛型约束,在函数或者类的末尾,通过
where T : new()
约束,确保T
类型可以被实例化。
应用场景
在封装sqlsugar中我遇到了类似的用法,传给sqlsugar中的entity必须有一个公开的无参构造函数
👇👇👇👇👇👇
public class Factory<T> where T : new()
{
public T CreateInstance()
{
return new T();
}
}
class Program
{
static void Main(string[] args)
{
Factory<MyClass> myClassFactory = new Factory<MyClass>();
MyClass myClassObj = myClassFactory.CreateInstance();
Console.WriteLine(myClassObj);
}
}
public class MyClass
{
// 👇👇👇👇👇,如何这里改成protect,必然会报错
public MyClass()
{
Console.WriteLine("MyClass constructor called.");
}
public override string ToString()
{
return "MyClass instance";
}
}