vb.net - 数字类型的通用方法

标签 vb.net generics extension-methods numeric

在 VB.NET 中,如果我想为不同类型的数值变量(IntegerLongDecimalDouble)我总是必须为这些定义多个方法:

<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

或者还有其他这样做的概念吗?

最佳答案

这是无法完成的,因为您无法将泛型类型限制为一组数字类型(IntegerLongDecimal)。问题是没有可以用来约束 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/

相关文章:

java - 从泛型类型获取类

c# - 优化的 JSON 序列化器/反序列化器作为扩展方法?

css - VB.Net - 更改 DIV 的背景颜色(或样式)

c# - AppFabric 无法从重启中恢复

generics - 包含闭包参数的方法需要错误的类型?

c# - 太多的扩展方法会降低性能吗?怎么运行的

c# - 我应该如何命名这个扩展方法?

mysql - vb.net 中的通用搜索框并从多个表中进行检查

.net - 简化字符串异常检查

java - 如何将我的方法更改为通用方法?