通用约束:强制类型具有带参数的静态函数和构造函数
我知道你可以写:
class GenericClass<T> where T : new()
{
}
强制 T
有一个空的构造函数。
我的问题是:
-
你能强制
T
有一个带有特定类型参数的构造函数吗?喜欢:class SingletonFactoryWithEmptyConstructor
;其中 T : new(int) -
您可以强制
T
具有静态函数(比方说,void F()
),以便您可以在泛型类中使用此函数吗?喜欢:class GenericClass
;其中 T : void F() { 无效 G () { TF(); } } 我知道您可以指定
T
实现一个接口,但我不希望这样做。我想指定T
有一个静态函数。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,C# 中没有这样的东西。
我之前建议 “静态接口” 可以相当简洁地表达这一点。它们仅对于泛型类型约束有用(无论如何,我怀疑),但是你可以表达:
在我看来,最后一点特别有趣,允许使用合适的加法和除法运算符对数字类型使用通用“平均”方法。
我相信 MS 的一些人也考虑过类似的事情,但我还没有听到任何表明他们正在积极研究的消息。
No, there's nothing like this in C#.
I've previously suggested that "static interfaces" could express this reasonably neatly. They'd only be useful for generic type constraints (I suspect, anyway) but then you could express:
The last of these points is particularly interesting in my view, allowing things like a generic "Average" method over numeric types with suitable addition and division operators.
I believe some folks at MS have thought about something similar, but I haven't heard anything to suggest they're actively working on it.