gpt4 book ai didi

c# - 如何传递给实现 certan 接口(interface)的通用函数类类型?

转载 作者:行者123 更新时间:2023-11-30 13:32:47 24 4
gpt4 key购买 nike

我想创建一个带有这样签名的通用函数:void funcName<T>()其中 T将需要成为我想要的某些特定接口(interface)的实现。如何进行这样的检查?如何传递给实现 certan 接口(interface)的泛型函数类类型?

所以我创建了一些 public interface IofMine {}我尝试创建一个类似 public static void funcName<T>() where T : IofMine { var a = new T} 的函数可悲的是我得到:

Error: Cannot create an instance of the variable type 'T' because it does not have the new() constraint

我应该怎么做才能使我的函数接收的类类型不仅具有我想要的接口(interface)而且还具有构造函数?

最佳答案

为了要求泛型参数有一个默认构造函数,指定 new() 作为泛型约束的一部分。

public static void funcName<T>() where T : IofMine, new()
{
T a = new T();
}

您只能使用它来要求默认(即无参数)构造函数。例如,您不能要求构造函数采用字符串参数。

关于c# - 如何传递给实现 certan 接口(interface)的通用函数类类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11606041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com