我有一个名为Gender
的枚举类,我有像
public enum GENDER
{
MALE = 1,
FEMALE = 2,
OTHERS = 3,
}
在我的业务对象中,我刚为此创建了一个属性,如
public GENDER Gender
{
get
{
return gender;
}
set
{
gender = value;
}
}
在我的数据库中,其类型为integer
。为此,我尝试通过名称Gender
在add函数中分配Gender
值。但它显示错误。是否可以将枚举转换为整数,以便它自动获取值。
任何人都可以帮助我......
答案 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。