Enum::GetValues() returns 零个元素

Enum::GetValues() returns zero elements

我的方法 Enum::GetValues() 有问题。它 returns 什么都没有——没有错误,没有元素。 'a' 的长度为零。此代码来自微软网站,因此这是官方示例。我不能让它工作。项目是针对.NET Framework 4.7.2的,这应该没问题。我正在使用 VS2022 进行所有更新。有人有什么建议吗?谢谢

Link: https://docs.microsoft.com/en-us/dotnet/api/system.enum.getvalues?view=net-6.0

using namespace System;
enum class Colors
{
   Red, Green, Blue, Yellow
};
    
int main()
{
   Console::WriteLine(  "The values of the Colors Enum are:" );
   Array^ a = Enum::GetValues( Colors::typeid );
   for ( Int32 i = 0; i < a->Length; i++ )
   {
      Object^ o = a->GetValue( i );
      Console::WriteLine(  "{0}", Enum::Format( Colors::typeid, o,  "D" ) );
   }
}

示例应产生:

//       The values of the Colors Enum are:
//       0
//       1
//       2
//       3

但结果只有:

The values of the Colors Enum are:

enum class 是 c++11 作用域枚举,而不是 .net 枚举,请参阅 https://docs.microsoft.com/en-us/cpp/dotnet/how-to-define-and-consume-enums-in-cpp-cli

处的注释

要使其成为 .net 枚举,您需要添加 privatepublic。例如:

private enum class Colors
{
   Red, Green, Blue, Yellow
};