1

我有一个名为 的枚举类Gender,我有这样的值:

public enum GENDER
{
    MALE = 1,
    FEMALE = 2,
    OTHERS = 3,
}

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

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

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

我怎样才能解决这个问题?

4

7 回答 7

5

(int)Gender会做的。要转换特定值而不是属性,您将执行类似(int)GENDER.MALE;

于 2012-06-22T15:15:12.197 回答
3

枚举默认“继承”自int(默认情况下它们存储在其中int,除非您选择其他整数类型),因此您可以轻松地进行转换int

int i = (int)GENDER.MALE;

GENDER g = (GENDER)2;

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

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

GENDER g = (GENDER)26;
于 2012-06-22T15:18:45.953 回答
1

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

int n = (int)GENDER.MALE;

GENDER g = (GENDER)1;

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

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

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

于 2012-06-22T15:15:48.047 回答
1

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

yourintdatabasefiled = (int)GENDER.yourproperty
于 2012-06-22T15:17:23.300 回答
1

如果 (int)Gender 不足以解决您的演员阵容问题,请尝试在您的代码中添加 int.Parse(var, int)。这可能会有所帮助...

于 2012-06-22T15:18:16.593 回答
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);
}
于 2012-06-22T15:18:55.530 回答
1

前面的答案是对的。Gender 现在是一种类型,就像 int 一样,因此您可以相应地进行转换 - 也可以两种方式:

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

因此对于

int i = (int)GENDER.male;

i将等于 1。

同样的

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

i也将是 1。

于 2012-06-22T15:22:49.407 回答