如果我想在两种Enum
类型之间进行转换,我希望它们的值具有相同的名称,是否有一个简洁的方法,或者我必须这样做:
enum colours_a { red, blue, green }
enum colours_b { yellow, red, blue, green }
static void Main(string[] args)
{
colours_a a = colours_a.red;
colours_b b;
//b = a;
b = (colours_b)Enum.Parse(typeof(colours_b), a.ToString());
}
Run Code Online (Sandbox Code Playgroud)
?
您也可以这样做,不知道它是否足够整洁:
enum A { One, Two }
enum B { Two, One }
static void Main(string[] args)
{
B b = A.One.ToB();
}
Run Code Online (Sandbox Code Playgroud)
当然,这需要扩展方法:
static B ToB(this A a)
{
switch (a)
{
case A.One:
return B.One;
case A.Two:
return B.Two;
default:
throw new NotSupportedException();
}
}
Run Code Online (Sandbox Code Playgroud)