191

??C# の演算子に相当する VB.NET はありますか?

4

6 に答える 6

163

If()2 つの引数で演算子を使用します ( Microsoft ドキュメント)。

' Variable first is a nullable type.
Dim first? As Integer = 3
Dim second As Integer = 6

' Variable first <> Nothing, so its value, 3, is returned.
Console.WriteLine(If(first, second))

second = Nothing
' Variable first <> Nothing, so the value of first is returned again. 
Console.WriteLine(If(first, second))

first = Nothing second = 6
' Variable first = Nothing, so 6 is returned.
Console.WriteLine(If(first, second))
于 2008-12-31T16:51:16.090 に答える
109

オペレーターがあなたIF()に代わってトリックを行う必要があります。

value = If(nullable, defaultValueIfNull)

http://visualstudiomagazine.com/listings/list.aspx?id=252

于 2008-12-31T16:53:06.710 に答える
20

拡張メソッドを使用できます。これは SQL のように機能COALESCEし、おそらくテストしようとしているものには過剰ですが、機能します。

    ''' <summary>
    ''' Returns the first non-null T based on a collection of the root object and the args.
    ''' </summary>
    ''' <param name="obj"></param>
    ''' <param name="args"></param>
    ''' <returns></returns>
    ''' <remarks>Usage
    ''' Dim val as String = "MyVal"
    ''' Dim result as String = val.Coalesce(String.Empty)
    ''' *** returns "MyVal"
    '''
    ''' val = Nothing
    ''' result = val.Coalesce(String.Empty, "MyVal", "YourVal")
    ''' *** returns String.Empty
    '''
    ''' </remarks>
    <System.Runtime.CompilerServices.Extension()> _
    Public Function Coalesce(Of T)(ByVal obj As T, ByVal ParamArray args() As T) As T

        If obj IsNot Nothing Then
            Return obj
        End If

        Dim arg As T
        For Each arg In args
            If arg IsNot Nothing Then
                Return arg
            End If
        Next

        Return Nothing

    End Function

ビルトインは、null 許容の選択肢を2 つIf(nullable, secondChoice)しか処理できません。ここでは、必要な数のパラメータを指定できます。最初の null 以外のものが返され、残りのパラメーターはその後評価されません ( /および/のように短絡) 。CoalesceAndAlso&&OrElse||

于 2008-12-31T16:55:24.927 に答える