设置一个枚举等于另一个

Bou*_*ory 3 .net c# enums

我在2个不同的对象中有2个枚举.我想将enum对象#1 设置为等于enum对象#2.

这是我的对象:

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;
      }
    }
Run Code Online (Sandbox Code Playgroud)

我想这样做,但这不会编译:

 MVC1.Obj1 obj1 = new MVC1.Obj1();
 MVC2.Obj2 obj2 = new MVC2.Obj2();
 obj1.enum1 = obj2.enum1; //I know this won't work.
Run Code Online (Sandbox Code Playgroud)

如何将Obj1中的枚举设置为等于Obj2中的枚举?谢谢

Chr*_*air 7

假设你保持相同,你可以转换为/从int:

obj1.enum1 = (MVC1.MyEnum)((int)obj2.enum1);
Run Code Online (Sandbox Code Playgroud)


les*_*rid 6

枚举有一个基础整数类型,默认情况下为int(System.Int32),但您也可以使用"enum MyEnum:type " 显式指定它.

因为您在两个不同的命名空间中工作,所以Enum类型本质上是不同的,但因为它们的底层类型是相同的,所以您可以将它们转换为:

obj1.enum1 = (MVC1.MyEnum) obj2.enum1;
Run Code Online (Sandbox Code Playgroud)

注意:在C#中,即使没有任何参数,也必须使用括号进行函数调用.您应该将它们添加到构造函数调用中.