为什么控制台在 C++/CLI 中需要两个冒号?

Why does console need two colons in C++/CLI?

在 C# 中,我们这样做:

Console.WriteLine("C#");

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

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

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

一本关于 C++/CLI 的书说 ConsoleSystem 命名空间中的 class 那么为什么要使用 :: 运算符?是不同的 console class 在一起吗? system 命名空间是否也与 C# 中的命名空间不同?如果是这样,为什么他们给它取了同样的名字?

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

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

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

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