📜  其中 T : class, new() (1)

📅  最后修改于: 2023-12-03 15:07:05.723000             🧑  作者: Mango

C# 中的泛型约束之其中 T : class, new()

在 C# 中,我们可以使用泛型来创建可重用的代码,泛型约束可以帮助我们增加类型参数的限制,使得我们能够更加精确地控制类型参数的范围,从而提高代码的稳定性和可读性。

其中 T : class, new() 是一种常用的泛型约束,它表示泛型类型 T 必须是引用类型,并且必须支持无参构造函数。

下面是一个示例代码:

public class MyGenericClass<T> where T : class, new()
{
    public T CreateInstance()
    {
        return new T();
    }
}

在上面的代码中,我们定义了一个名为 MyGenericClass 的泛型类,其中 T : class, new() 就是泛型约束,它表示 T 类型必须是引用类型,并且必须支持无参构造函数。

在 MyGenericClass 类中,我们定义了一个名为 CreateInstance 的方法,它的返回值类型为 T,也就是泛型类型。在方法中,我们使用 new T() 的方式创建了一个 T 类型的实例并将其返回。

在使用 MyGenericClass 类时,我们需要指定类型参数 T,指定的类型必须满足 T : class, new() 的要求才能够被正常使用。

下面是一个使用示例:

var myClass = new MyGenericClass<MyClass>();
var instance = myClass.CreateInstance();

在上面的示例中,我们使用 MyGenericClass 泛型类创建了一个名为 myClass 的实例,并使用 CreateInstance 方法创建了一个 MyClass 类型的实例。

需要注意的是,如果我们在调用 CreateInstance 方法时指定的类型参数不满足 T : class, new() 的要求,就会在编译时出现错误。

因此,使用 T : class, new() 泛型约束可以让我们更加高效地编写可重用的代码,并且可以减少运行时出现错误的机会。