是否有可能在.NET中编写只接受数字类型的泛型函数?

Dan*_*Tao 3 .net vb.net generics types

假设我想写一个类似下面的函数(像往常一样,为了说明的目的,这是一个简单的例子):

Public Function calcSqSum(Of T)(ByVal list As IEnumerable(Of T)) As T
    Dim sumSq As T

    For Each item As T In list
        sumSq += (item * item)
    Next

    Return sumSq
End Function
Run Code Online (Sandbox Code Playgroud)

正如您可能猜到的,此函数会导致错误,因为无法保证通用对象实现+运算符.据我所知,任何数字类型(整数,双数,十进制等)都会.

有没有办法编写一个可以接受任何数字类型的(准)泛型函数,而不必自己为每个这样的类型显式地重载函数?

或者,我认为同样可接受的解决方案是以某种方式检查类型是否实现'+'运算符(或通常与数字类型相关并由函数使用的任何运算符).

Meh*_*ari 8

不,因为没有特定的通用接口,所有这些接口都可以实现.从本质上讲,框架中没有"数字类型"的真实概念.除非你将它们包装在自定义的类中,并且你的方法只接受你的类型(这不是你问题的直接答案,只是一种解决方法).