C# の側面を説明する Jon の回答に加えて、VB の機能は次のとおりです。
VB withOption Strict Onでは、 による比較は= 常に値の等価性をテストし、参照の等価性をテストすることはありません。実際、 は .を定義していないため、Option Strict On切り替えるとコードはコンパイルされません。このオプションは常にオンにしておく必要があります。ハエトリグサよりも効果的にバグをキャッチします (ただし、特定のケースでは、この緩い動作が実際には正しいことを行います)。1System.ObjectOperator=
実際、 を使用するとOption Strict On、VB は C# よりもさらに厳密に動作します。C# では、への呼び出しをトリガーするa == b かSomeType.operator==(a, b)、存在しない場合は参照等価比較を呼び出します (これは を呼び出すことと同じですobject.ReferenceEquals(a, b))。
一方、VB では、比較a = b は常に等価演算子を呼び出します。2参照等価比較を使用する場合は、使用する必要がありますa Is b(これも と同じObject.ReferenceEquals(a, b)です)。
1)を使用することが悪い考えである理由を次に示しOption Strict Offます。私は .NET が公式にリリースされる前から数年前まで、ほぼ 10 年間 VB.NET を使用してきましたが、.NET が何をするのかまったくわかりませa = bんOption Strict Off。ある種の等価比較を行いますが、正確に何が起こり、その理由はわかりません。ただし、 C# の機能よりも複雑dynamicです (十分に文書化された API に依存しているため)。MSDN の内容は次のとおりです。
強力な型付けOption Strict Onを提供し、データの損失を伴う意図しない型変換を防ぎ、遅延バインディングを禁止し、パフォーマンスを向上させるため、使用することを強くお勧めします。
2) Jon は 1 つの例外として文字列について言及しました。文字列では、後方互換性のために等値比較がさらにいくつかのことを行います。