2016-12-27 3 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); 
} 

내가이 "^이"구글에 의미를 찾으려고하지만 난 아무것도 찾을 수 없습니다 (또는 내 쿼리가 정확하지 않았다)

그 의미는 무엇입니까? 그것은 "*"와 같은가요? '&'으로 표시 되나요?

이 구문은 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#에서 해당 값은 참조 유형 (값 유형과 반대) 또는 박스형 값 유형의 변수 일뿐입니다.

다른 사람들도 말했듯이 이것은/clr 옵션을 사용하여 컴파일해야한다는 C++/CLI 구문입니다. C++/CLI는 기본적으로 C# (또는 더 일반적으로 .NET)의 기능을 갖춘 C++입니다.

+1

* C++/CLI는 기본적으로 C++ ... *입니다. 솔직히 의심 스럽습니다. 당신의 대답은 마지막 문장을 제외하고는 좋은 답변입니다. –

+0

@RawN 왜 안 되니? C++/CLI는 C++의 상위 집합이며 .NET과의 인터페이스에 기능이 추가되었습니다. C++ 하위 집합은 관리되지 않는 C++에서 작동하는 것과 동일하게 작동합니다. – user1610015

+1

C++ 상위 집합 지향 C++ * (여기에 설명 된대로) (https : //en.wikipedia) 대신 C++/CLI를 자체 언어 (예 : 새로운 키워드 집합)로 생각해야합니다. .org/위키/C % 2B % 2B/CLI # Syntax_changes). –