关于enum应用的总结
2010-12-27 21:08
183 查看
1、关于enum的定义
/// <summary>
/// 新闻、下载资源等的审核状态
/// </summary>
public enum ApplyStatus
{
/// <summary>
/// 审核不通过
/// </summary>
NotPassed = -1,
/// <summary>
/// 未审核
/// </summary>
NotApply = 0,
/// <summary>
/// 审核通过
/// </summary>
Passed = 1
}
2、符号名和常数值的互相转换
ApplyStatus status = ApplyStatus.NotApply;
int fabNum = (int)status;//转换为常数值。必须使用强制转换。
ApplyStatus statusString = (ApplyStatus)1;//常数值转换成符号名。如果使用ToString(),则是((ApplyStatus)1).ToString(),注意必须有括号。
string applyType = status.ToString();//显示符号名
string applyVal = status.ToString("D");//显示常数值
3、获得所有符号名的方法(具体参见Enum类)
foreach (string s in Enum.GetNames(typeof(ApplyStatus)))
{
Console.WriteLine(s);
}
4、将枚举作为位标志来处理
根据下面的两个例子,粗略地说,一方面,设置标志[Flags]或者[FlagsAttribute],则表明要将符号名列举出来;另一方面,可以通过强制转换,将数字转换为符号名。说不准确。看下面的例子体会吧。注意:
例一:
Fabric fab = Fabric.Cotton | Fabric.Rayon | Fabric.Silk;
Console.WriteLine("MyFabric
= {0}", fab);//输出:Fabric.Cotton |
Fabric.Rayon | Fabric.Silk;
例二:
class FlagsAttributeDemo
{
// Define an Enum without FlagsAttribute.
enum SingleHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};
// Define an Enum with FlagsAttribute.
[FlagsAttribute]
enum MultiHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};
static void Main( )
{
Console.WriteLine(
"This
example of the FlagsAttribute attribute /n" +
"generates the following output." );
Console.WriteLine(
"/nAll
possible combinations of values of an /n" +
"Enum
without FlagsAttribute:/n" );
// Display all possible combinations
of values.
for( int val =
0; val <= 8; val++ )
Console.WriteLine( "{0,3} - {1}", val, ( (SingleHue)val ).ToString( )
);
Console.WriteLine( "/nAll
possible combinations of values of an /n" + "Enum with
FlagsAttribute:/n" );
// Display all possible combinations
of values.
// Also display an invalid value.
for( int
val = 0; val <= 8; val++ )
Console.WriteLine ( "{0,3} - {1}", val, ( (MultiHue)val ).ToString( )
);
}
}
/*
This example of the FlagsAttribute attribute
generates the following output.
All possible combinations of values of an
Enum without FlagsAttribute:
0 - Black
1 - Red
2 - Green
3 - 3
4 - Blue
5 - 5
6 - 6
7 - 7
8 - 8
All possible combinations of values of an
Enum with FlagsAttribute:
0 - Black
1 - Red
2 - Green
3 - Red, Green
4 - Blue
5 - Red, Blue
6 - Green, Blue
7 - Red, Green, Blue
8 - 8
*/
5、枚举作为函数参数。经常和switch结合起来使用。下面举例
public static double GetPrice(Fabric fab)
{
switch (fab)
{
case Fabric.Cotton: return (3.55);
case Fabric.Silk: return (5.65);
case Fabric.Wool: return (4.05);
case Fabric.Rayon: return (3.20);
case Fabric.Other: return (2.50);
default: return (0.0);
}
}
6、上面三点一个完整的例子
//1、enum的定义
public enum Fabric : short
{
Cotton = 1,
Silk = 2,
Wool = 3,
Rayon = 8,
Other = 128
}
//将枚举作为参数传递
public static double GetPrice(Fabric
fab)
{
switch (fab)
{
case Fabric.Cotton: return (3.55);
case Fabric.Silk : return (5.65);
case Fabric.Wool: return (4.05);
case Fabric.Rayon: return (3.20);
case Fabric.Other: return (2.50);
default: return (0.0);
}
}
public static void Main()
{
Fabric fab =
Fabric.Cotton;
int fabNum =
(int)fab;
string
fabType = fab.ToString();
string
fabVal = fab.ToString ("D");
double cost
= GetPrice(fab);
Console.WriteLine("fabNum
= {0}/nfabType = {1}/nfabVal = {2}/n", fabNum, fabType, fabVal);
Console.WriteLine("cost = {0}", cost);
}
7、Enum类的使用
Enum.IsDefinde、Enum.Parse两种方法经常一起使用,来确定一个值或符号是否是一个枚举的成员,然后创建一个实例。Enum.GetName打印出一个成员的值;Enum.GetNames打印出所有成员的值。其中注意typeof的使用。这一点很重要。
public enum MyFamily
{
YANGZHIPING
= 1,
GUANGUIQIN =
2,
YANGHAORAN =
4,
LIWEI = 8,
GUANGUIZHI =
16,
LISIWEN =
32,
LISIHUA =
64,
}
string s = "YANGHAORAN";
if (Enum.IsDefined(typeof(MyFamily), s))
{
MyFamily f = (MyFamily)Enum.Parse(typeof(MyFamily), s);
GetMyFamily(f);
Console.WriteLine("The name is:" + Enum. GetName(typeof(MyFamily), 2));
string[] sa = Enum.GetNames(typeof(MyFamily));
foreach (string ss in sa)
{
Console.WriteLine(ss);
}
}
/// <summary>
/// 新闻、下载资源等的审核状态
/// </summary>
public enum ApplyStatus
{
/// <summary>
/// 审核不通过
/// </summary>
NotPassed = -1,
/// <summary>
/// 未审核
/// </summary>
NotApply = 0,
/// <summary>
/// 审核通过
/// </summary>
Passed = 1
}
2、符号名和常数值的互相转换
ApplyStatus status = ApplyStatus.NotApply;
int fabNum = (int)status;//转换为常数值。必须使用强制转换。
ApplyStatus statusString = (ApplyStatus)1;//常数值转换成符号名。如果使用ToString(),则是((ApplyStatus)1).ToString(),注意必须有括号。
string applyType = status.ToString();//显示符号名
string applyVal = status.ToString("D");//显示常数值
3、获得所有符号名的方法(具体参见Enum类)
foreach (string s in Enum.GetNames(typeof(ApplyStatus)))
{
Console.WriteLine(s);
}
4、将枚举作为位标志来处理
根据下面的两个例子,粗略地说,一方面,设置标志[Flags]或者[FlagsAttribute],则表明要将符号名列举出来;另一方面,可以通过强制转换,将数字转换为符号名。说不准确。看下面的例子体会吧。注意:
例一:
Fabric fab = Fabric.Cotton | Fabric.Rayon | Fabric.Silk;
Console.WriteLine("MyFabric
= {0}", fab);//输出:Fabric.Cotton |
Fabric.Rayon | Fabric.Silk;
例二:
class FlagsAttributeDemo
{
// Define an Enum without FlagsAttribute.
enum SingleHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};
// Define an Enum with FlagsAttribute.
[FlagsAttribute]
enum MultiHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};
static void Main( )
{
Console.WriteLine(
"This
example of the FlagsAttribute attribute /n" +
"generates the following output." );
Console.WriteLine(
"/nAll
possible combinations of values of an /n" +
"Enum
without FlagsAttribute:/n" );
// Display all possible combinations
of values.
for( int val =
0; val <= 8; val++ )
Console.WriteLine( "{0,3} - {1}", val, ( (SingleHue)val ).ToString( )
);
Console.WriteLine( "/nAll
possible combinations of values of an /n" + "Enum with
FlagsAttribute:/n" );
// Display all possible combinations
of values.
// Also display an invalid value.
for( int
val = 0; val <= 8; val++ )
Console.WriteLine ( "{0,3} - {1}", val, ( (MultiHue)val ).ToString( )
);
}
}
/*
This example of the FlagsAttribute attribute
generates the following output.
All possible combinations of values of an
Enum without FlagsAttribute:
0 - Black
1 - Red
2 - Green
3 - 3
4 - Blue
5 - 5
6 - 6
7 - 7
8 - 8
All possible combinations of values of an
Enum with FlagsAttribute:
0 - Black
1 - Red
2 - Green
3 - Red, Green
4 - Blue
5 - Red, Blue
6 - Green, Blue
7 - Red, Green, Blue
8 - 8
*/
5、枚举作为函数参数。经常和switch结合起来使用。下面举例
public static double GetPrice(Fabric fab)
{
switch (fab)
{
case Fabric.Cotton: return (3.55);
case Fabric.Silk: return (5.65);
case Fabric.Wool: return (4.05);
case Fabric.Rayon: return (3.20);
case Fabric.Other: return (2.50);
default: return (0.0);
}
}
6、上面三点一个完整的例子
//1、enum的定义
public enum Fabric : short
{
Cotton = 1,
Silk = 2,
Wool = 3,
Rayon = 8,
Other = 128
}
//将枚举作为参数传递
public static double GetPrice(Fabric
fab)
{
switch (fab)
{
case Fabric.Cotton: return (3.55);
case Fabric.Silk : return (5.65);
case Fabric.Wool: return (4.05);
case Fabric.Rayon: return (3.20);
case Fabric.Other: return (2.50);
default: return (0.0);
}
}
public static void Main()
{
Fabric fab =
Fabric.Cotton;
int fabNum =
(int)fab;
string
fabType = fab.ToString();
string
fabVal = fab.ToString ("D");
double cost
= GetPrice(fab);
Console.WriteLine("fabNum
= {0}/nfabType = {1}/nfabVal = {2}/n", fabNum, fabType, fabVal);
Console.WriteLine("cost = {0}", cost);
}
7、Enum类的使用
Enum.IsDefinde、Enum.Parse两种方法经常一起使用,来确定一个值或符号是否是一个枚举的成员,然后创建一个实例。Enum.GetName打印出一个成员的值;Enum.GetNames打印出所有成员的值。其中注意typeof的使用。这一点很重要。
public enum MyFamily
{
YANGZHIPING
= 1,
GUANGUIQIN =
2,
YANGHAORAN =
4,
LIWEI = 8,
GUANGUIZHI =
16,
LISIWEN =
32,
LISIHUA =
64,
}
string s = "YANGHAORAN";
if (Enum.IsDefined(typeof(MyFamily), s))
{
MyFamily f = (MyFamily)Enum.Parse(typeof(MyFamily), s);
GetMyFamily(f);
Console.WriteLine("The name is:" + Enum. GetName(typeof(MyFamily), 2));
string[] sa = Enum.GetNames(typeof(MyFamily));
foreach (string ss in sa)
{
Console.WriteLine(ss);
}
}
相关文章推荐
- 关于enum应用的总结
- 关于enum应用的总结
- 关于enum应用的总结
- 关于enum应用的总结
- 关于enum应用的总结
- 关于enum应用的总结
- 关于带权中位数的应用总结
- OC关于NSDate类的方法和应用的总结!(全)
- 关于app集成支付宝应用内支付的问题总结
- 关于文件流的阅读笔记(文件操作相关总结) [[ 应用过 ]]
- 【阶段总结】关于C# WinForm程序的一些应用总结
- 关于Struts2的相关知识总结及应用
- 关于“应用图标更改,但是安转之后,图标未改变”总结
- 应用库后关于_OBJC_CLASS_$_文件referenced from:objc-class-ref in报错的测试总结
- 汇总关于css中text-indent应用总结
- 关于属性页和属性单的应用总结
- WINCE应用层设计经验总结-关于用串口发AT命令给蓝牙
- 关于管道通信和多线程应用 调试总结...
- 一些关于HTML与CSS的总结与实际应用
- 关于Windows Phone应用开发总结