VBの場合、Tのインターフェイスへの明示的なキャストが必要なのにOption Strict On
、なぜそれを必要としないのですか?Nullable(Of T)
T
つまり
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
値は、まあ、null許容であり、可能性があるということですNothing
。これは、インターフェースのような参照には問題ありません。したがって、この変換は、T
caseへの変換(値がない場合に失敗する)とは異なり、常に成功するNullable
ため、暗黙の変換と見なすことができます。
私の質問は今「どうやって?」になります。Nullable(Of T)
(独自のインターフェースを持たない)からT
理論的に交渉されたインターフェースへの変換はどのように行われますか?
私は実装がbox Nullable<T>
であると知っています、それはラッパーを効果的に取り除きNullable
ます、しかし私はここで概念を確認しています...
(したがって、ドキュメントを確認して、これが説明されているかどうかを確認します。)