将枚举转换为整数

时间:2012-06-22 15:13:17

标签: c# .net casting enums

我有一个名为Gender的枚举类,我有像

这样的值
public enum GENDER
{
    MALE = 1,
    FEMALE = 2,
    OTHERS = 3,
}

在我的业务对象中,我刚为此创建了一个属性,如

public GENDER Gender
{
  get
  { 
      return gender; 
  }
  set 
  {
      gender = value; 
  }
}

在我的数据库中,其类型为integer。为此,我尝试通过名称Gender在add函数中分配Gender值。但它显示错误。是否可以将枚举转换为整数,以便它自动获取值。

任何人都可以帮助我......

7 个答案:

答案 0 :(得分:5)

(int)Gender会这样做。要投射特定值而不是属性,您将执行(int)GENDER.MALE;

之类的操作

答案 1 :(得分:3)

默认情况下枚举“继承”来自int(默认情况下,它们会存储在int中,除非您选择其他整数类型),因此您可以毫无困难地进出int

int i = (int)GENDER.MALE;

GENDER g = (GENDER)2;

请注意,隐式强制转换不支持,强制转换必须是显式的。

请注意,强制转换不会对范围进行任何检查,因此您可以将int值没有GENDER的{​​{1}}强制转换为GENDER变量而不会出现错误:

GENDER g = (GENDER)26;

答案 2 :(得分:1)

您应该能够使用强制转换在整数和枚举值之间进行转换。

int n = (int)GENDER.MALE;

GENDER g = (GENDER)1;

如果您正在处理从数据库列(或任何字符串)读取的字符串,则可以执行以下操作:

GENDER g = (GENDER) Enum.Parse(typeof(GENDER), "MALE");

请注意,Enum.Parse会返回一个对象,因此您必须先将其强制转换为枚举类型。

答案 3 :(得分:1)

如果要将数据库值设置为性别属性,请执行以下操作:

yourintdatabasefiled=(int)GENDER.yourproperty

答案 4 :(得分:1)

如果(int)Gender不足以修复您的强制转换问题,请尝试在代码中添加int.Parse(var,int)。这可能会有所帮助......

答案 5 :(得分:1)

以下示例应该足够了:

int val = (int)Gender.Male;
int val2 = (int)_gender;

还有System.Enum方法可帮助您发现和操作枚举值,如:

Console.WriteLine("The values of the Gender Enum are:");
foreach (int i in Enum.GetValues(typeof(Gender)))
{
    Console.WriteLine(i);
}

答案 6 :(得分:1)

以上是正确的。性别现在是一种类型,就像int一样,所以你可以相应地进行投射 - 两种方式:

(int)Gender = . . .
/* Or */
(Gender)int = . . . 

所以,对于

int i = (int)GENDER.male;

我等于1。

相同
Gender = GENDER.male;
i = (int)Gender;

我也是1。