Вопрос

У меня есть свойство с нулевым значением, и я хочу вернуть нулевое значение.Как мне это сделать в 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).Не написав это прямо, вы не сможете этого сделать.

Обнуляемые типы в C#

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top