문제

null 허용 속성이 있는데 null 값을 반환하고 싶습니다.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에서는 Nothing이고 C#에서는 null입니다.

Nullable 일반 데이터 유형을 사용하면 컴파일러는 값 유형에 "Nothing"(또는 null" 값)을 할당할 수 있습니다.명시적으로 작성하지 않으면 이를 수행할 수 없습니다.

C#의 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);

위 할당에서 finder.Advisor*(long?)*에 null을 직접 할당하면 문제가 없습니다.하지만 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