编程语言
首页 > 编程语言> > c# – 通用约束:强制类型具有静态函数和带参数的构造函数

c# – 通用约束:强制类型具有静态函数和带参数的构造函数

作者:互联网

我知道你可以写:

class GenericClass<T> where T : new()
{ 

}

强制执行T有一个空构造函数.

我的Qs是:

>你能强制说T有一个具有特定参数类型的构造函数吗?喜欢:

class SingletonFactoryWithEmptyConstructor<T> where T : new(int)

>你能强制执行T有一个静态函数(比方说,void F()),这样你就可以在泛型类中使用这个函数了吗?喜欢 :

class GenericClass<T> where T : void F()
{ 
   void G ()
   {
       T.F();
   }
}

我知道你可以指定T实现一个接口,但我不希望这样.我想指定T具有静态函数.

解决方法:

不,在C#中没有这样的东西.

我之前曾建议“static interfaces”可以合理地表达这一点.它们只对泛型类型约束有用(我怀疑,无论如何)但是你可以表达:

>具有任意参数的构造函数
>静态方法和属性
>操作符

在我看来,这些要点中的最后一点特别有趣,允许使用具有合适的加法和除法运算符的数字类型的通用“平均”方法.

我相信MS的一些人已经考虑过类似的东西,但我没有听到任何暗示他们正在积极研究的事情.

标签:c,net,generics,generic-constraints
来源: https://codeday.me/bug/20190531/1187522.html