一个最简单的枚举类
public enum sex
{
male=0,
female=1
}
然而使用或绑定时需要中文,解决办法有以下几种:
1.
public enum sex
{
男人=0,
女人=1
}
2.(参考他人)
public enum SexEnum:int
{
men = 0,
women
}
private string GetSexEnumCnName(SexEnum sex)
{
const string[] sNames = new string[2]{ "男 ", "女 "};
return sNames[(int)sex];
}
3.直接在用的时候写个switch方法
但个人感觉都不是很好,所以结合网上资料,写了个扑克花色的自定义枚举类:
//public enum EnumCardMark
//{
// Heart = 1,//红桃
// Diamond = 2,//方块
// Spade=3,//黑桃
// Clubs=4//草花
//}
public class EnumCardMark
{
private int _Enum_Value;
public int Enum_Value
{
get { return _Enum_Value; }
}
private string _Enum_Name;
public string Enum_Name
{
get { return _Enum_Name; }
}
private EnumCardMark(int value, string name)
{
_Enum_Value = value;
_Enum_Name = name;
}
public static readonly EnumCardMark NoMark = new EnumCardMark(0, string.Empty);
public static readonly EnumCardMark Heart = new EnumCardMark(1, "红桃");
public static readonly EnumCardMark Diamond = new EnumCardMark(2, "方块");
public static readonly EnumCardMark Spade = new EnumCardMark(3, "黑桃");
public static readonly EnumCardMark Clubs = new EnumCardMark(4, "草花");
public static List<EnumCardMark> EnumCardMarkList = new List<EnumCardMark> { EnumCardMark.Heart, EnumCardMark.Diamond, EnumCardMark.Spade, EnumCardMark.Clubs };
public static explicit operator EnumCardMark(int value)
{
switch (value)
{
case 1:
return Heart;
case 2:
return Diamond;
case 3:
return Spade;
case 4:
return Clubs;
default:
return new EnumCardMark(value,value.ToString());
}
}
public static explicit operator int(EnumCardMark value)
{
return value.Enum_Value;
}
public EnumCardMark Copy()
{
return new EnumCardMark(Enum_Value, Enum_Name);
}
}
这样用起来的时候非常方便,要绑定到combobox或dropdownlist等控件的时候直接绑定到List,也实现了枚举的类型转换,并且多了中文属性。个人还是比较倾向这种写法的。
只是要注意的是.net 自带的枚举是值类型而这时是引用,不过使用起来没影响,因为这个类内属性不能被赋值。
本文介绍了如何在C#中创建自定义枚举类,以解决枚举在使用时需要中文显示的问题。通过一个扑克牌花色的例子,展示了如何创建一个带有中文名称的枚举类,包括枚举值、中文名属性以及类型转换方法,便于在UI控件中绑定和使用。这种方法使得枚举更加灵活,同时保持了类型安全。
3741

被折叠的 条评论
为什么被折叠?



