String ^ MyString = gcnew String(" abcd");

时间:2016-12-27 00:34:25

标签: pointers reference c++-cli dereference

我正在MSDN上阅读c ++的foreach语法:

// 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);  
}

我试图找到&#34; ^&#34;谷歌上的意思,但我找不到任何东西(或我的查询不正确)

这是什么意思?它是&#34; *&#34;?它是&#34;&amp;&#34;?

此语法也适用于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);
}

2 个答案:

答案 0 :(得分:1)

&#34; ^&#34;表示托管引用,用于托管类型。它就像一个指针,但对于托管类型。语法不存在于C#中。在C#中,等价物只是引用类型的变量(与值类型相对)或盒装值类型。

正如其他人所说,这是C ++ / CLI语法,这意味着你必须使用/ clr选项进行编译。 C ++ / CLI基本上是C ++,具有C#(或更一般地说,.NET)的特性。

答案 1 :(得分:0)

https://docs.microsoft.com/en-us/cpp/extensions/handle-to-object-operator-hat-cpp-component-extensions?view=vs-2019希望该链接可以为您提供帮助。 btw,^是一个特殊字符,被Google搜索引擎忽略,因此您无法搜索该字符。