使用 VB Option Strict On
,为什么 aNullable(Of T)
不需要显式转换为 T 的接口,而它确实需要一个 to T
?
IE
Dim x As Integer? = 5
Dim y As Integer
Dim z As IComparable
y = x ' Fails to compile with error
' "Option Strict On disallows implicit conversions from 'Integer?' to 'Integer'."
z = x ' Succeeds
编辑:正如@SSS 所显示的(有点),部分答案是Nullable
值是可以为空的,并且可以是Nothing
,这对于像接口这样的引用来说很好。所以这个转换总是成功的,不像转换成T
case (当Nullable
没有值时失败),所以它可以被看作是一个隐式转换。
我的问题现在变成了“如何?”。如何从Nullable(Of T)
(没有自己的接口)转换为T
理论上协商的接口?
我知道实现是box Nullable<T>
,它有效地剥离了Nullable
包装器,但我在这里确认了这个概念......
(所以我会查看文档,看看他们是否解释了这一点。)