2016-12-27 140 views
0

我讀了C++的foreach語法上MSDN: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); 
} 

我試着找一下‘^’關於谷歌意思,但我找不到任何(或我的查詢是不正確的)

這是什麼意思?它是作爲「*」嗎?它是作爲「&」嗎?

此語法也適用於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++,具有C#(或更一般的.NET)的特性。

+1

* C++/CLI基本上是C++ ... *。我真的懷疑這一點。除了最後一句,你的答案是一個好答案。 – 2016-12-27 00:49:18

+0

@RawN爲什麼不呢? C++/CLI是C++的超集,添加了與.NET接口的功能。 C++子集與非託管C++中的工作方式完全相同。 – user1610015

+1

* C++/CLI應該被認爲是它自己的一種語言(例如使用一組新的關鍵字),而不是C++超集合導向的託管C++ * [如此處所述](https://en.wikipedia .ORG /維基/ C%2B%2B/CLI#Syntax_changes)。 – 2016-12-27 00:57:57

相關問題