C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■86467 / )  Re[1]: 参照型変数のNothing判定について
□投稿者/ shu (1086回)-(2018/01/31(Wed) 16:32:34)
No86464 (joto さん) に返信

以下のような処理を流した場合、処理が正しく行われます。
ただしそれはOperator =,<>のペアをクラス内で定義しているからです。
定義されていないクラスに対し=,<>演算を行うとエラーとなります。
参照型のNothing判定をする場合、Is,IsNot演算子を使いましょう。

        Dim obj As Class1

        obj = New Class1 With {.a = "1"}
        If obj <> Nothing Then Console.WriteLine($"obj={obj}はnothingではありません。")

Public Class Class1
    Public Property a As String

    Public Shared Operator =(itm1 As Class1, itm2 As Class1)
        If itm1 Is Nothing AndAlso itm2 Is Nothing Then
            Return True
        Else
            Return (itm1 Is itm2)
        End If
    End Operator

    Public Shared Operator <>(itm1 As Class1, itm2 As Class1)
        Return Not (itm1 = itm2)
    End Operator

    Public Overrides Function ToString() As String
        Return a.ToString
    End Function
End Class

返信 編集キー/


管理者用

- Child Tree -