【发布时间】:2010-10-31 08:16:03
【问题描述】:
假设我想写一个类似下面的函数(像往常一样,一个简单的例子用于说明目的):
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
正如您可能猜到的那样,此函数会导致错误,因为不能保证通用对象实现 + 运算符。不过,据我所知,任何数字类型(整数、双精度、小数等)都可以。
有没有办法编写一个可以接受任何数值类型的(准)泛型函数,而不必自己为每个此类类型显式重载函数?
另外,我想一个同样可以接受的解决方案是检查一个类型是否实现了“+”运算符(或任何通常与数值类型相关联并由函数使用的运算符)。
【问题讨论】:
标签: .net vb.net generics types