C#中的枚举类型,原来有这么多用法
2014-04-10 17:47
375 查看
枚举型的隐含类型为 int 型, 例如 int x=(int)Days.Sat ; 一点问题没有。据MSDN说枚举类型的隐含类型可以为除了char以外的任意数字类型…… [ Every enumeration type has an underlying type, which can be any integral type except char. ]
下面这个例程演示使用长整型作为枚举的隐含类型:
// keyword_enum2.cs
// Using long enumerators
using System;
public class EnumTest
{
enum Range :long {Max = 2147483648L, Min = 255L};
static void Main()
{
long x = (long)Range.Max;
long y = (long)Range.Min;
Console.WriteLine("Max = {0}", x);
Console.WriteLine("Min = {0}", y);
}
}
如果需要重新取回长整形值,也是一个转换就可以了。 long x = (long)Range.Max;
最有意思的还是下面要说的,enum的[Flags]标记。啥也不说啦,看程序吧:
//The following code example illustrates the use and effect of the
//System.FlagsAttribute attribute on an enum declaration.
// enumFlags.cs
// Using the FlagsAttribute on enumerations.
using System;
[Flags]
public enum FileAttribute
{
ReadOnly= 0x01,
Hide= 0x02,
System= 0x04,
Archived= 0x08
sxbjz.blog.jp
hzbjz.blog.jp
jnbjz.blog.jp
dybjz.blog.jp
hfbjz.blog.jp
}
class FlagTest
{
static void Main()
{
FileAttributeoptions options= FileAttribute.ReadOnly| FileAttribute.System;
Console.WriteLine(options);
Console.WriteLine((int)options);
}
}
输出为:
ReadOnly, System
labjz.blog.jp
czbjz.blog.jp
chuz.blog.jp
zzmz.blog.jp
jcbjz.blog.jp
nbbjz.blog.jp
5
看到了吧?呵呵。这就是常用的标志位阿~ 在C#里变得更简单易用了。
有enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
1> 我给定一个值1,怎样把对应的Sun以字符串的形式返回来?(常用在取数据库里的XXX_ID并转换成对应的值的时候用。——不过有点硬编码的感觉。)
答:Convert.ChangeType( enumValue, enumType ).ToString();// enumValue=1; enumType=typeof(Days)
2>我给定一个字符串"Sun",怎么返回enum Day.Sun?
答: 可以直接用 Enum.Parse( enumType, string,[boolean])来解决问题. ;例如这个例子, Enum.Parse(typeof(Day), "Sun", true) 就返回Day.Sun , 第3个参数指定是否大小写敏感. 可以省略.
3>我想知道 enum Day 中所有的字符串值. 怎么写?
答: 这个貌似也很简单哦, foreach(string name in Enum.GetNames(typeof(Day))) Console.WriteLine(name); 还有一个Enum.GetName() ,具体用法看MSDN去吧....
下面这个例程演示使用长整型作为枚举的隐含类型:
// keyword_enum2.cs
// Using long enumerators
using System;
public class EnumTest
{
enum Range :long {Max = 2147483648L, Min = 255L};
static void Main()
{
long x = (long)Range.Max;
long y = (long)Range.Min;
Console.WriteLine("Max = {0}", x);
Console.WriteLine("Min = {0}", y);
}
}
如果需要重新取回长整形值,也是一个转换就可以了。 long x = (long)Range.Max;
最有意思的还是下面要说的,enum的[Flags]标记。啥也不说啦,看程序吧:
//The following code example illustrates the use and effect of the
//System.FlagsAttribute attribute on an enum declaration.
// enumFlags.cs
// Using the FlagsAttribute on enumerations.
using System;
[Flags]
public enum FileAttribute
{
ReadOnly= 0x01,
Hide= 0x02,
System= 0x04,
Archived= 0x08
sxbjz.blog.jp
hzbjz.blog.jp
jnbjz.blog.jp
dybjz.blog.jp
hfbjz.blog.jp
}
class FlagTest
{
static void Main()
{
FileAttributeoptions options= FileAttribute.ReadOnly| FileAttribute.System;
Console.WriteLine(options);
Console.WriteLine((int)options);
}
}
输出为:
ReadOnly, System
labjz.blog.jp
czbjz.blog.jp
chuz.blog.jp
zzmz.blog.jp
jcbjz.blog.jp
nbbjz.blog.jp
5
看到了吧?呵呵。这就是常用的标志位阿~ 在C#里变得更简单易用了。
有enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
1> 我给定一个值1,怎样把对应的Sun以字符串的形式返回来?(常用在取数据库里的XXX_ID并转换成对应的值的时候用。——不过有点硬编码的感觉。)
答:Convert.ChangeType( enumValue, enumType ).ToString();// enumValue=1; enumType=typeof(Days)
2>我给定一个字符串"Sun",怎么返回enum Day.Sun?
答: 可以直接用 Enum.Parse( enumType, string,[boolean])来解决问题. ;例如这个例子, Enum.Parse(typeof(Day), "Sun", true) 就返回Day.Sun , 第3个参数指定是否大小写敏感. 可以省略.
3>我想知道 enum Day 中所有的字符串值. 怎么写?
答: 这个貌似也很简单哦, foreach(string name in Enum.GetNames(typeof(Day))) Console.WriteLine(name); 还有一个Enum.GetName() ,具体用法看MSDN去吧....
相关文章推荐
- enum : C#中的枚举类型,原来有这么多用法
- enum : C#中的枚举类型,原来有这么多用法(转)
- C#中的枚举类型enum用法
- dhl:枚举的另一种用法:C#中字符串和枚举类型互转
- c# enum用法 枚举用法 Asp.net ENUM用法
- C#基础精华02(静态类,值类型,引用类型,枚举,结构,ref与out)
- c#中[Flags] 枚举类型定义问题_百度知道
- [C#]C#补习——类型和操作符—PART3—枚举
- C# 枚举用法总结
- 关于C#中this的一个用法----用于C#原始类型扩展方法
- C#中this用法系列(二) 通过this修饰符为原始类型扩展方法
- C# 枚举类型 enum (一)
- C#枚举类型绑定到下拉框
- C# 给枚举类型增加一个备注特性
- C#枚举类型-Enum
- c# 枚举 enum 类型
- C#与Java对比学习:数据类型、集合类、栈与队列、迭达、可变参数、枚举
- c#基础--枚举类型
- C#枚举类型
- C#枚举类型解析 分类: C# 2012-05-13 19:18 1700人阅读 评论(0) 收藏