在 Delphi Prism 中将 int 转换为 Enum

Rob*_*obo 5 delphi enumerable oxygene delphi-prism

与这个问题基本相同,但是在Delphi Prism中:

在 C# 中将 int 转换为 enum

我设法从字符串中做到这一点:

YourEnum := Enum.Parse(TypeOf(YourEnum), "mystr") as YourEnum
Run Code Online (Sandbox Code Playgroud)

但我尝试了以下操作,并收到类型不匹配错误:

YourEnum := 3 as YourNum
Run Code Online (Sandbox Code Playgroud)

你知道将 int 转换为 Enum 的语法是什么吗?

RRU*_*RUZ 4

@Robo,将 int 转换为 Enum 的语法是

YourEnumVar := YourEnum(3);
Run Code Online (Sandbox Code Playgroud)

或者

YourEnumVar := Object(3) as YourEnum;
Run Code Online (Sandbox Code Playgroud)

看这个样本

namespace ConsoleAppEnumsDelphiPrism;

interface

type
  Language = (Delphi=1,Delphi_Prism,CBuilder);

  ConsoleApp = class
  public
    class method Main;
  end;

implementation

class method ConsoleApp.Main;
var
    MyEnum : Language;
begin
  // String to Enum
  MyEnum := Language(Enum.Parse(typeof(Language), 'Delphi_Prism'));
  Console.WriteLine(MyEnum.ToString());//Print Delphi_Prism

  // Int to Enum
  MyEnum:=Language(2);
  Console.WriteLine(MyEnum.ToString());//Print Delphi_Prism

  // Int to Enum using "as"   
  MyEnum:= Object(1) as Language;
  Console.WriteLine(MyEnum.ToString());//Print Delphi

  Console.ReadKey();
end;

end.
Run Code Online (Sandbox Code Playgroud)