【问题标题】:String ^ MyString = gcnew String("abcd");String ^ MyString = gcnew String("abcd");
【发布时间】:2017-05-11 07:05:46
【问题描述】:

我在 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);  
}

我试图在谷歌上找到“^”的含义,但我找不到任何东西(或者我的查询不正确)

这是什么意思?是“*”吗?是“&”吗?

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

【问题讨论】:

  • 这不是 C++,而是微软的专有语言 C++/CLI。
  • 这不是 C++,而是 C++/CLI。
  • DirectX 也使用这个。这到底是什么意思?
  • 删除了 C# 标签,因为这个问题中没有 C#。
  • 你的两个 sn-ps 都在 C++/CLI 中

标签: pointers reference c++-cli dereference


【解决方案1】:

https://docs.microsoft.com/en-us/cpp/extensions/handle-to-object-operator-hat-cpp-component-extensions?view=vs-2019希望这个链接可以帮到你。 顺便说一句,^ 是一个特殊字符,被谷歌搜索引擎忽略,所以你不能搜索。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • C++/CLI 基本上就是 C++...。老实说,我对此表示怀疑。除了最后一句之外,您的答案很好。
    • @RawN 为什么不呢? C++/CLI 是 C++ 的超集,增加了与 .NET 接口的功能。 C++ 子集的工作方式与它在非托管 C++ 中的工作方式相同。
    • C++/CLI 应该被认为是一种自己的语言(例如,使用一组新的关键字),而不是面向 C++ 超集的托管 C++ @ 987654321@.
    • @RawN 它本身就是一门语言,但在技术上它仍然是 C++03 的超集。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2020-06-21
    • 1970-01-01
    相关资源
    最近更新 更多