我需要一个解决方案来进行类型参数重载
我需要类型参数重载,如下所示:
Public Class Map(Of TKey, TValue)
Public Class Map(Of TKey As IEquatable(Of TKey), TValue)
这样我就可以New Map(Of Human)
编译器会自动将其与 Public Class Map(Of TKey, TValue)
匹配,如果我 new Map(Of String)< /代码> 编译器会自动将其匹配到
Public Class Map(Of TKey As IEquatable(Of TKey), TValue)
(因为 String 是一个 IEquatable(Of String))
现在我的解决方案是为该类提供不同的名称例如:
Public Class Map(Of TKey, TValue)
Public Class EqMap(Of TKey As IEquatable(Of TKey), TValue)
但我正在寻找为了更好的解决方案
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
抱歉,我不会说 VB...但是在 c# 中(您的标签中包含)您想要的是
,
不幸的是,这不受支持,因为约束不是签名的一部分,您必须提供不同的签名并使用不同的签名在我看来,名称(或者可能是命名空间)是最干净的解决方案。
Sorry I don't speak VB... but in c# (which you have in your tags) what you want is
and
unfortunately this isn't supported because constraints are not part of the signature you will have to provide different signatures and using different names (or possibly namespaces) is the cleanest solution IMO.
没有比你建议的更好的解决方案。就我个人而言,我更喜欢
EquatableMap
而不是EqMap
,如果是
,EquatableMap
可以继承Map
关系和重用是有益的。.Net 不支持类重载,谁知道呢,也许在 .Net 5.0 中。这会有用的。
There is no solution, better than what you propose. Personally I would prefer
EquatableMap
toEqMap
,EquatableMap
could inheritMap
if theis
relationship and reuse was beneficial..Net does not support class overloading, who knows, maybe in .Net 5.0. It would be useful.