将一个枚举设置为等于另一个枚举
本文关键字:枚举 设置 另一个 一个 | 更新日期: 2023-09-27 18:36:22
我在 2 个不同的对象中有 2 个枚举。我想将对象 #1 中的enum
设置为等于对象 #2 中的enum
。
这是我的对象:
namespace MVC1 {
public enum MyEnum {
firstName,
lastName
}
public class Obj1{
public MyEnum enum1;
}
}
namespace MVC2 {
public enum MyEnum {
firstName,
lastName
}
public class Obj2{
public MyEnum enum1;
}
}
我想这样做,但这不会编译:
MVC1.Obj1 obj1 = new MVC1.Obj1();
MVC2.Obj2 obj2 = new MVC2.Obj2();
obj1.enum1 = obj2.enum1; //I know this won't work.
如何将 Obj1 中的枚举设置为等于 Obj2 中的枚举?谢谢
假设你保持它们相同,你可以投射到/从 int:
obj1.enum1 = (MVC1.MyEnum)((int)obj2.enum1);
枚举
有一个底层整数类型,默认情况下是int(System.Int32),但您也可以通过使用"enum MyEnum : type"显式指定它。
由于您在两个不同的命名空间中工作,因此 Enum 类型本质上是不同的,但由于它们的基础类型相同,因此只需强制转换它们:
obj1.enum1 = (MVC1.MyEnum) obj2.enum1;
注意:在 C# 中,即使没有任何参数,也必须对函数调用使用括号。应将它们添加到构造函数调用中。
最好的方法是使用 Enum.IsDefined 检查它是否在范围内:
int one = (int)obj2.enum1;
if (Enum.IsDefined(typeof(MVC1.MyEnum), one )) {
obj1.enum1 = (MVC1.MyEnum)one;
}
obj1.enum1 = (MVC1.MyEnum) Enum.Parse(typeof(MVC1.MyEnum),
((int)obj2.enum1).ToString());
或
int one = (int)obj2.enum1;
obj1.enum1 = (MVC1.MyEnum)one;