有没有办法在VB.NET中定义一个只接受单打或双打的Generic?
我根据我在网上找到的内容尝试了以下内容,但没有编译:
Dim target As Nullable(Of {Single, Double})
Dim target As Nullable(Of T As {Single, Double})
Dim target As Nullable(Of T {Single, Double})
Dim target As Nullable(Of Single, Double)
Dim target As Nullable(Of T As Single, Double)
我想指定target
只能是Single?
或Double?
。
答案 0 :(得分:3)
Public Class NullableFloat(Of T As {Double, Single})
是正确的语法,see here受约束。
但是,此语句指定通用类型T
必须同时实现Double
和Single
。由于.Net原语是密封的,Double
和Single
之间没有继承关系,T
无法满足这两个约束。
由于.Net类型不能同时属于Double
和Single
,因此您可以创建一个名为NullableFloat
的复杂类型,其Value
属性为Double
输入但是使用Double
或Single
的setter,但为什么不使用Nullable(Of Double)
。