Delphi Prism,如何声明一个常量有界的枚举数组

时间:2011-11-03 20:52:57

标签: delphi-xe delphi-prism

我收到编译错误

[错误1(PE114)类型“ConsoleApplication.MyEnum的数组[0..1]”用于“ConsoleApplication”类型。必须公开D:\ PrismProjects \ ConsoleApplication \ ConsoleApplication \ Program.pas 14 42 ConsoleApplication]

当我尝试编译以下代码时:

namespace ConsoleApplication;

interface

type
  ConsoleApp = class
    public
      class method Main(args: array of string);
  end;

  MyEnum = (F, T);

const
  EnumOfBool: array[boolean] of MyEnum = [MyEnum.F, MyEnum.T];

implementation

  class method ConsoleApp.Main(args: array of string);
  begin
    Console.WriteLine('Hello World.');
  end;
end.

1 个答案:

答案 0 :(得分:0)

MyEnum在哪里定义?我很确定无论在哪里,它都没有标记为公共(如错误消息所示),但它保留在默认可见性(在.NET中是私有的)。

然后RRUZ在他的评论中是正确的,你应该避免全局声明。 Oxygene编译器需要创建一个(不可见的,自动生成的)类,其中包含此类作为静态(类)成员,因为.NET不允许全局声明,因此您应该首先“正确”执行它。