ユーザ用ツール

サイト用ツール




サイドバー

C++/CLI

CLR

実用編

その他

cli:演算子

==演算子

a==bの評価

  1. a,bが共にハンドルの場合
    1. a,bが共にString^の場合
      • 文字列の比較が行われる。
    2. a,bが共にdelegate^の場合
      • delegateの中身の関数の比較が行われる。
    3. aがString^かdelegate^でbがそれ以外のハンドルの場合
      • ハンドルの比較が行われる。
    4. a,bが共にString^でもdelegate^でもない場合
      • ハンドルの比較が行われる。
  2. aがハンドルでbがハンドル以外の場合
    1. aがString^でbが文字列リテラルの場合
      • 文字列リテラルがString^になり、文字列の比較が行われる。
    2. aがObject^以外ででbが基本型(value type含む)またはポインターの場合
      • コンパイルエラーになる。
    3. aがObject^でbが基本型(value type含む)の場合
      • bがボックス化され、ハンドルの比較が行われる。
    4. aがObject^でbがポインターの場合
      • コンパイルエラーになる。
  3. aもbもハンドルでない場合
    • C++と同じように行われる。
using namespace System;
ref class C {
    int i;
};
delegate void mydelegate();
void func()
{
    return;
}
int main(array<System::String ^> ^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;
}



/var/www/html/virtual/cppcli/data/pages/cli/演算子.txt · 最終更新: 2013/12/23 09:08 (外部編集)