VB.NETでnull許容の数値オプションパラメータを作成するにはどうすればよいですか?
13617 次
4 に答える
16
編集:このブログ投稿によると、これはVB.NET10で可能であるはずです。あなたがそれを使用しているなら、あなたは持っている可能性があります:
Public Sub DoSomething(Optional ByVal someInteger As Integer? = Nothing)
Console.WriteLine("Result: {0} - {1}", someInteger.HasValue, someInteger)
End Sub
' use it
DoSomething(Nothing)
DoSomething(20)
VB.NET 10以外のバージョンの場合:
リクエストはできません。オプションのパラメーターまたはnull許容型のいずれかを使用する必要があります。この署名は無効です:
Public Sub DoSomething(Optional ByVal someInteger As Nullable(Of Integer) _
= Nothing)
このコンパイルエラーが発生します:「オプションのパラメータは構造体タイプを持つことはできません。」
nullableを使用している場合、値を渡したくない場合はNothingに設定します。次のオプションから選択します。
Public Sub DoSomething(ByVal someInteger As Nullable(Of Integer))
Console.WriteLine("Result: {0} - {1}", someInteger.HasValue, someInteger)
End Sub
また
Public Sub DoSomething(Optional ByVal someInteger As Integer = 42)
Console.WriteLine("Result: {0}", someInteger)
End Sub
于 2010-01-18T13:44:02.527 に答える
6
できないので、代わりにオーバーロードを使用する必要があります。
Public Sub Method()
Method(Nothing) ' or Method(45), depending on what you wanted default to be
End Sub
Public Sub Method(value as Nullable(Of Integer))
' Do stuff...
End Sub
于 2010-01-18T13:47:50.623 に答える
2
オブジェクトを使用することもできます。
Public Sub DoSomething(Optional ByVal someInteger As Object = Nothing)
If someInteger IsNot Nothing Then
... Convert.ToInt32(someInteger)
End If
サブ終了
于 2011-10-07T15:26:40.100 に答える
0
私はVS2012バージョンのようにそれを理解します
Private _LodgingItemId As Integer?
Public Property LodgingItemId() As Integer?
Get
Return _LodgingItemId
End Get
Set(ByVal Value As Integer?)
_LodgingItemId = Value
End Set
End Property
Public Sub New(ByVal lodgingItem As LodgingItem, user As String)
Me._LodgingItem = lodgingItem
If (lodgingItem.LodgingItemId.HasValue) Then
LoadLodgingItemStatus(lodgingItem.LodgingItemId)
Else
LoadLodgingItemStatus()
End If
Me._UpdatedBy = user
End Sub
Private Sub LoadLodgingItemStatus(Optional ByVal lodgingItemId As Integer? = Nothing)
''''statement
End Sub
于 2014-11-29T12:54:53.103 に答える