日常生活的交流与学习

首页 新随笔 联系 管理

泛型中的new关键字的约束的函数

  1. 一般用于泛型约束,在函数或者类的末尾,通过 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";
    }
}
posted on 2024-08-31 12:46  lazycookie  阅读(5)  评论(0编辑  收藏  举报