在 VB.NET 中,如果我想为不同类型的数值变量(Integer
、Long
、Decimal
、Double
)我总是必须为这些定义多个方法:
<Extension()> Public Function Add(a As Integer, b As Integer) As Integer
Return a + b
End Function
<Extension()> Public Function Add(a As Long, b As Long) As Long
Return a + b
End Function
<Extension()> Public Function Add(a As Double, b As Double) As Double
Return a + b
End Function
<Extension()> Public Function Add(a As Decimal, b As Decimal) As Decimal
Return a + b
End Function
现在对于单个操作来说这是可以的,但是我想要创建的方法越多,我也必须做的重复项就越多。
有通用的方法吗?我很想看到这样的东西(伪代码):
<Extension()> _
Public Function Add(Of T As Numeric)(a As T, b As T) As T
Return a + b
End Function
或者还有其他这样做的概念吗?
最佳答案
这是无法完成的,因为您无法将泛型类型限制为一组数字类型(Integer
、Long
、Decimal
、双
)。问题是没有可以用来约束 T 的 IArithmetic 接口(interface),因此你不能这样写:
' This does not work because IArithmetic does not exist
<Extension()> _
Public Function Add(Of T As IArithmetic)(a As T, b As T) As T
Return a + b
End Function
但是,您可以通过 Microsoft Feedback Center 加入说服 Microsoft 实现此计划的事业。并对类似请求提出建议和/或发表评论。
关于vb.net - 数字类型的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18103705/