2016-12-27 5 views
0

私はC++のMSDN上のforeach構文読んでいた:String^MyString = gcnew String( "abcd");

// for_each_string1.cpp 
// compile with: /ZW 
#include <stdio.h> 
using namespace Platform; 

ref struct MyClass { 
    property String^ MyStringProperty; 
}; 

int main() { 
    String^ MyString = ref new String("abcd"); 

    for each (char c in MyString) 
     wprintf("%c", c); 

    wprintf("/n"); 

    MyClass^ x = ref new MyClass(); 
    x->MyStringProperty = "Testing"; 

    for each(char c in x->MyStringProperty) 
     wprintf("%c", c); 
} 

が、私は 『^』はGoogleで何を意味するかを見つけることを試みたが、私は何かを見つけることができませんでした(または私のクエリが正しくありませんでした)

それはどういう意味ですか?それは "*"と同じですか?それは "&"ですか?

この構文はC#にも適用されます。両方の言語で同じことを意味していますか? C#code

ピース:

using namespace System; 

int main(){ 
    array<int>^ arr = gcnew array<int>{0,1,2,5,7,8,11}; 
    int even=0, odd=0; 

    for each (int i in arr) { 
    if (i%2 == 0) 
     even++;  
    else 
     odd++;   
    } 

    Console::WriteLine(“Found {0} Odd Numbers, and {1} Even Numbers.”, 
    odd, even); 
} 
+0

これはC++ではなく、Microsoft独自の言語であるC++/CLIです。 –

+0

これはC++ではなく、C++/CLIです。 –

+0

DirectXもこれを使用します。それはどういう意味ですか? – Felix

答えて

1

"^" はマネージ型のために使用される管理基準を表します。ポインタのようですが、管理された型のためです。構文はC#では存在しません。 C#では、同等のものは、(値の型とは対照的に)参照型、またはボックス化された値型の単なる変数です。

これは他にも述べたように、これはC++/CLIの構文です。つまり、/ clrオプションを指定してコンパイルする必要があります。 C++/CLIは、基本的にはC++(またはより一般的には.NET)の機能を持つC++です。

+1

* C++/CLIは基本的にC++ ...です。私は正直にそれを疑う。あなたの答えは最後の文を除いて良いものです。 –

+0

@RawNどうしてですか? C++/CLIはC++のスーパーセットであり、.NETとのインターフェイスに機能が追加されています。 C++サブセットは、アンマネージC++での動作と同じように動作します。 – user1610015

+1

* C++のスーパーセット指向のManaged C++ *(ここで説明されているように)(https://en.wikipedia)ではなく、C++/CLIは独自の言語として考えるべきです.org/wiki/C%2B%2B/CLI#Syntax_changes)。 –

関連する問題