VB.NET では、 Is は型の等価性をテストするために使用される言語演算子です。Type.Equals は、同じ型の 2 つの変数が同じオブジェクトを指しているかどうかをテストすることに注意してください。以下の例に示すように。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim X As New TestObject
Dim Y As New TestObject
If X Is Y Then MsgBox("The Same 1")
If Type.Equals(X, Y) Then MsgBox("The Same 2")
X = Y
If X Is Y Then MsgBox("The Same 3")
If Type.Equals(X, Y) Then MsgBox("The Same 4")
End Sub
End Class
Public Class TestObject
Public Value As Double
End Class
これは、BASIC 言語の「equals」演算子の歴史のために行われました。VB4 でオブジェクトが導入されたとき、等しいかどうかをテストするために IS が選択されました。
いくつかの個々の BASIC イディオムが移植された理由と移植されなかった理由についての Paul Vicks のコメントを google と usenet で検索することをお勧めします。このケースは、VB.NET が導入されたため、混乱を避けるためだったと思います。
ObjectA = ObjectC ' これにより、ObjectA は、ObjectC によって参照されるのと同じオブジェクトを参照します。
VB6では Set ObjectA = ObjectC でした
VB4 でオブジェクトが導入されたときと同じ理由で、IS と Set が equals をオーバーロードする代わりにオブジェクトを処理するために使用されました。
最終的に、これらの癖はコーディングの基本的な方法の一部になりました。