私はNullable(Of Integer)
を使用していて、ちょうどNothing
が0にキャストされています。Nullable(Of Integer)
を使用しているときに嫌なことがあります。"If"とNullable(Of Integer)の奇妙なやり取り
func1
下記のように動作しません。私はそれを得ることによって自分の意志を行うことができます(func2
参照)。しかし、なぜこれが必要なのかわかりません(私はそれをするのを忘れてしまうかもしれません)。
func1
はなぜ私がしたいのですか?私はこれまでにこれに遭遇したと思います。私は(LINQPadでこれを実行している)を取得
Function func1(parameter As Integer) As Nullable(Of Integer)
Return If(parameter > 10, parameter, Nothing)
End Function
Function func2(parameter As Integer) As Nullable(Of Integer)
Return If(parameter > 10, parameter, DirectCast(Nothing, Integer?))
End Function
Sub Main
' Should be True
System.Console.WriteLine(func1(11).HasValue)
System.Console.WriteLine(func2(11).HasValue)
System.Console.WriteLine()
' Should be False
System.Console.WriteLine(func1(9).HasValue)
System.Console.WriteLine(func2(9).HasValue)
End Sub
結果は以下のとおりです。あなたのケースで重要な
True
True
True
False
私は私の答えを修正します。 –
Brainmelt。ありがとう@ファビオ。私は私の答えでそれを述べました:) –