{{indexmenu_n>31}} ====== ==演算子 ====== a==bの評価 - a,bが共にハンドルの場合 - a,bが共にString^の場合 * 文字列の比較が行われる。 - a,bが共にdelegate^の場合 * delegateの中身の関数の比較が行われる。 - aがString^かdelegate^でbがそれ以外のハンドルの場合 * ハンドルの比較が行われる。 - a,bが共にString^でもdelegate^でもない場合 * ハンドルの比較が行われる。 - aがハンドルでbがハンドル以外の場合 - aがString^でbが文字列リテラルの場合 * 文字列リテラルがString^になり、文字列の比較が行われる。 - aがObject^以外ででbが基本型(value type含む)またはポインターの場合 * コンパイルエラーになる。 - aがObject^でbが基本型(value type含む)の場合 * bがボックス化され、ハンドルの比較が行われる。 - aがObject^でbがポインターの場合 * コンパイルエラーになる。 - aもbもハンドルでない場合 * C++と同じように行われる。 using namespace System; ref class C { int i; }; delegate void mydelegate(); void func() { return; } int main(array ^args) { String^ a = "aaa"; String^ b = "aaa"; Object^ o = "aaa"; C^ c = gcnew C; mydelegate^ d1 = gcnew mydelegate(func); mydelegate^ d2 = gcnew mydelegate(func); if ( a == b ) // true Console::WriteLine(L"Hello World"); if ( d1 == d2 ) // true Console::WriteLine(L"Hello World"); if ( a == o ) // false Console::WriteLine(L"Hello World"); if ( a == "aaa" ) // true Console::WriteLine(L"Hello World"); if ( a == L"aaa" ) // true Console::WriteLine(L"Hello World"); char* p1 = "aaa"; int i=0; // if ( a == p1 ) // compile error // if ( o == p1 ) // compile error // if ( a == 0 ) // compile error // if ( c == 0 ) // compile error if ( o == 0 ) // false Console::WriteLine(L"Hello World"); if ( o == i ) // false Console::WriteLine(L"Hello World"); Object^ oi = 0; if ( oi == 0 ) // false Console::WriteLine(L"Hello World"); // if ( o == p1 ) // compile error if ( "aaa" == "aaa" ) // same as c++, undefined. Console::WriteLine(L"Hello World"); return 0; }