Каково нулевое значение Nullable(Of T)?
Вопрос
У меня есть свойство с нулевым значением, и я хочу вернуть нулевое значение.Как мне это сделать в VB.NET ?
В настоящее время я использую это решение, но я думаю, что мог бы быть способ получше.
Public Shared ReadOnly Property rubrique_id() As Nullable(Of Integer)
Get
If Current.Request.QueryString("rid") <> "" Then
Return CInt(Current.Request.QueryString("rid"))
Else
Return (New Nullable(Of Integer)).Value
End If
End Get
End Property
Решение
Вы ищете ключевое слово "Ничего"?
Другие советы
Да, это Ничто в VB.NET или null в C #.
Обнуляемый универсальный тип данных дает компилятору возможность присвоить типу значения значение "Nothing" (или null).Не написав это прямо, вы не сможете этого сделать.
Public Shared ReadOnly Property rubrique_id() As Nullable(Of Integer)
Get
If Current.Request.QueryString("rid") <> "" Then
Return CInt(Current.Request.QueryString("rid"))
Else
Return Nothing
End If
End Get
End Property
Или это тот способ, которым я пользуюсь, честно говоря, меня научил ReSharper :)
finder.Advisor = ucEstateFinder.Advisor == "-1" ? (long?)null : long.Parse(ucEstateFinder.Advisor);
Относительно приведенного выше назначения, если я напрямую назначу null finder.Советник * (длинный?) * проблем не возникнет.Но если я попытаюсь использовать предложение if, мне нужно будет использовать его следующим образом (long?)null
.
Хотя Nothing
может быть использован, ваш "существующий" код почти корректен;просто не пытайтесь получить .Value
:
Public Shared ReadOnly Property rubrique_id() As Nullable(Of Integer)
Get
If Current.Request.QueryString("rid") <> "" Then
Return CInt(Current.Request.QueryString("rid"))
Else
Return New Nullable(Of Integer)
End If
End Get
End Property
Затем это становится самым простым решением, если вы хотите свести его к If
выражение:
Public Shared ReadOnly Property rubrique_id() As Nullable(Of Integer)
Get
Return If(Current.Request.QueryString("rid") <> "", _
CInt(Current.Request.QueryString("rid")), _
New Nullable(Of Integer))
End Get
End Property