2016-12-27 2 views
0

ich die c las ++ 's foreach Syntax auf 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); 
} 

Ich habe versucht, was die "^" auf Google bedeutet, zu finden, aber ich konnte nichts finden (oder meine Frage nicht korrekt war)

Was bedeutet das? Ist es wie ein "*"? Ist es als "&"?

Diese Syntax gilt auch für C#. Bedeutet das in beiden Sprachen dasselbe?

Stück 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

Dies ist nicht C++, es ist Microsoft proprietäre Sprache, C++/CLI. –

+0

Dies ist nicht C++, es ist C++/CLI. –

+0

DirectX verwendet dies auch. Was heißt das überhaupt? – Felix

Antwort

1

Die "^" bezeichnet eine verwaltete Referenz, die für die verwalteten Typen verwendet wird. Es ist wie ein Zeiger, aber für verwaltete Typen. Die Syntax existiert nicht in C#. In C# ist das Äquivalent nur eine Variable eines Referenztyps (im Gegensatz zu einem Werttyp) oder ein Boxed-Werttyp.

Wie andere gesagt haben, ist dies C++/CLI-Syntax, was bedeutet, dass Sie mit der Option/CLR kompilieren müssen. C++/CLI ist im Grunde C++ mit Funktionen von C# (oder allgemeiner .NET).

+1

* C++/CLI ist im Grunde C++ ... *. Ich bezweifle das ehrlich. Ihre Antwort ist eine gute, mit Ausnahme des letzten Satzes. –

+0

@RawN Warum nicht? C++/CLI ist eine Obermenge von C++ mit Funktionen, die zur Schnittstelle mit .NET hinzugefügt wurden. Die C++ - Untergruppe funktioniert genauso wie in nicht verwaltetem C++. – user1610015

+1

* C++/CLI sollte als eine eigene Sprache (mit einem neuen Satz von Schlüsselwörtern zum Beispiel) gedacht werden, anstelle des C++ - superset-orientierten Managed C++ * [wie hier erklärt] (https: //en.wikipedia .org/wiki/C% 2B% 2B/CLI # Syntaxänderungen). –

Verwandte Themen