【问题标题】:Why does console need two colons in C++/CLI?为什么控制台在 C++/CLI 中需要两个冒号?
【发布时间】:2024-01-23 18:08:02
【问题描述】:

在 C# 中,我们这样做:

Console.WriteLine("C#");

在 C++/CLI 中,我们使用这种语法来使用控制台对象。

Console::WriteLine("C++ CLI");

我们在这两个地方都使用了一个 .NET 对象 Console,那么为什么我们在 C# 项目中使用 dot(.) 访问其成员函数 WriteLine() 而在 C++/CLI 项目中使用两个冒号?

从一本关于 C++/CLI 的书中,它说 ConsoleSystem 命名空间中的一个类,那么为什么要使用 :: 运算符?这是一个不同的console 类吗? system 命名空间是否也与 C# 中的命名空间不同?如果是这样,为什么他们将其命名为相同的名称?

【问题讨论】:

  • @HansPassant ".net 代码只使用堆" 不精确(值类型)

标签: c# c++-cli


【解决方案1】:

这是因为 WriteLine 是一个静态方法:

// C#
public static void WriteLine (string value);

scope resolution operator::用于调用C++中的静态方法

How do I call a static method of another class (in C++)

【讨论】: