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)
正如您可能猜到的,此函数会导致错误,因为无法保证通用对象实现+运算符.据我所知,任何数字类型(整数,双数,十进制等)都会.
有没有办法编写一个可以接受任何数字类型的(准)泛型函数,而不必自己为每个这样的类型显式地重载函数?
或者,我认为同样可接受的解决方案是以某种方式检查类型是否实现'+'运算符(或通常与数字类型相关并由函数使用的任何运算符).
不,因为没有特定的通用接口,所有这些接口都可以实现.从本质上讲,框架中没有"数字类型"的真实概念.除非你将它们包装在自定义的类中,并且你的方法只接受你的类型(这不是你问题的直接答案,只是一种解决方法).
| 归档时间: |
|
| 查看次数: |
1081 次 |
| 最近记录: |