C#枚举类型研究

测试代码:
---------------------------------------------------------------------------------------------------   
#region 常用方法
Console.WriteLine("");
Console.WriteLine("枚举类型常用方法");
Console.WriteLine("==================");

//确定枚举的底层类型
Console.WriteLine("GetUnderlyingType:"+Enum.GetUnderlyingType(typeof(SqlDbType)));

//检测是否支持特定值
Console.WriteLine("IsDefined:"+Enum.IsDefined(typeof(SqlDbType),"VarChar"));

//显示全部枚举值
SqlDbType[] ss =(SqlDbType[])Enum.GetValues(typeof(SqlDbType));
Console.WriteLine("Number of symbols defined: " + ss.Length);
foreach (SqlDbType tt in ss)
{
 Console.WriteLine("{0}={1}",tt,tt.ToString("X"));
}
#endregion

#region 相互转换
Console.WriteLine("");
Console.WriteLine("各种类型相互转换");
Console.WriteLine("==================");

SqlDbType s = SqlDbType.VarChar;

//枚举->String
//通用格式
Console.WriteLine("枚举->String:"+s.ToString());//或s.ToString("G")
//十进制格式
Console.WriteLine("枚举->String值(十进制格式):"+s.ToString("D"));
//十六进制格式
Console.WriteLine("枚举->String值(十六进制格式):"+s.ToString("X"));

//枚举->值
Console.WriteLine("枚举->值:"+(int)s);

//String->枚举
Console.WriteLine("String->枚举:"+(SqlDbType)Enum.Parse(typeof(SqlDbType),"VarChar",true));
//对于位标志枚举类型还可以求用逗号隔开的字符串对应的枚举值

//值->枚举
Console.WriteLine("值->枚举:"+(SqlDbType)2);

//将数值传为对应的枚举值字符串
Console.WriteLine("将数值转为对应的枚举值字符串:"+Enum.Format(typeof(SqlDbType),2,"G"));
//或Enum.GetName(typeof(SqlDbType),2)
#endregion

#region 位标志枚举类型运算   
Console.WriteLine("");
Console.WriteLine("位标志枚举类型运算");
Console.WriteLine("==================");
//判断是否含某一枚举值
String file = @"C:/CONFIG.SYS";
FileAttributes att = File.GetAttributes(file);
Console.WriteLine("Is {0} hidden? {1}",file,(att&FileAttributes.Hidden)!=0);
//设置为含两个枚举值
File.SetAttributes(file,FileAttributes.ReadOnly|FileAttributes.Hidden);
att = File.GetAttributes(file);
//含两个枚举值的变量->字体串
//enum定义时含[Flags]
Console.WriteLine("含两个枚举值的变量->字体串(enum定义时含[Flags]):"+att.ToString());
//enum定义时不含[Flags]
Console.WriteLine("含两个枚举值的变量->字体串(enum定义时不含[Flags]):"+att.ToString("F"));
#endregion

运行结果:
---------------------------------------------------------------------------------------------------   

枚举类型常用方法
==================
GetUnderlyingType:System.Int32
IsDefined:True
Number of symbols defined: 24
BigInt=00000000
Binary=00000001
Bit=00000002
Char=00000003
DateTime=00000004
Decimal=00000005
Float=00000006
Image=00000007
Int=00000008
Money=00000009
NChar=0000000A
NText=0000000B
NVarChar=0000000C
Real=0000000D
UniqueIdentifier=0000000E
SmallDateTime=0000000F
SmallInt=00000010
SmallMoney=00000011
Text=00000012
Timestamp=00000013
TinyInt=00000014
VarBinary=00000015
VarChar=00000016
Variant=00000017

各种类型相互转换
==================
枚举->String:VarChar
枚举->String值(十进制格式):22
枚举->String值(十六进制格式):00000016
枚举->值:22
String->枚举:VarChar
值->枚举:Bit
将数值转为对应的枚举值字符串:Bit

位标志枚举类型运算
==================
Is C:/CONFIG.SYS hidden? True
含两个枚举值的变量->字体串(enum定义时含[Flags]):ReadOnly, Hidden
含两个枚举值的变量->字体串(enum定义时不含[Flags]):ReadOnly, Hidden

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iamzgh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值