我可以定义一个可以采用几种可能的值类型的泛型吗? (VB.NET)

时间:2011-05-04 16:52:40

标签: vb.net generics

有没有办法在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?

1 个答案:

答案 0 :(得分:3)

Public Class NullableFloat(Of T As {Double, Single})是正确的语法,see here受约束。

但是,此语句指定通用类型T必须同时实现DoubleSingle。由于.Net原语是密封的,DoubleSingle之间没有继承关系,T无法满足这两个约束。

由于.Net类型不能同时属于DoubleSingle,因此您可以创建一个名为NullableFloat的复杂类型,其Value属性为Double输入但是使用DoubleSingle的setter,但为什么不使用Nullable(Of Double)