c# 位标记枚举和普通枚举的区别都用那些?什么时候用标记枚举?谢谢.越详细越好.

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/10 08:56:50
c# 位标记枚举和普通枚举的区别都用那些?什么时候用标记枚举?谢谢.越详细越好.

c# 位标记枚举和普通枚举的区别都用那些?什么时候用标记枚举?谢谢.越详细越好.
c# 位标记枚举和普通枚举的区别都用那些?什么时候用标记枚举?谢谢.越详细越好.

c# 位标记枚举和普通枚举的区别都用那些?什么时候用标记枚举?谢谢.越详细越好.
一、 枚举类型
  1、 使用枚举类型的理由:
  l
枚举类型是得程序更容易编写、阅读、维护,在代码中使用符号名称代替数字是程序设计的一贯主张.
  l 强类型的,便于类型检验
  2、
注意事项:
  l 枚举类型继承自System.Enum,System.Enum又继承自System.ValurType
  l
枚举类型不能定义方法、属性、事件
  l 枚举类型为常数而非只读字段,因此可能引入版本问题(见第八章的相关讨论)
  l 将枚举类型与引用它的类型定义在同一层次上,可减少代码录入的工作量
  

  3、 System.Enum中方法的应用:
  l public static Type GetUnderlyingType(Type
enumType);
  获取用于保存枚举类型实例值得基础类型.声明某枚举类型使用的基础类型语法如下:
  enum Human :
byte
  {
   Male,
  
Female
  }
  则调用上述方法Enum.GetUnderlyingType(typeof(Human));将返回System.Byte;
  l
public override string ToString();
   public string ToString(string);
//参数为格式字符串
   public static string Format(Type enumType,object value,string
format);
   //Value – 要转换的值,format – 格式字符串(G,g,X,x,D,d,F,f)
  l public
static Array GetValues(Type enumType);
  获取枚举中常数值的数组
  l public static
string GetName(Type enumType,object value);
  在指定枚举中检索具有指定值的常数的名称
  l
public static string[] GetNames(Type enumType);
  检索指定枚举中常数名称的数组.
  l
public static object Parse(Type,string);
   public static object Parse(Type,
string,bool);
  将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象
  l public static bool
IsDefined(Type enumType,object
value);
  返回指定枚举中是否存在具有指定值的常数的指示,value为常数的值或名称
  l
系列ToObject方法
  返回设置为指定值的、指定枚举类型的实例
  二、 位标记
  l
使用System.FlagsAttributes定制特性,使得ToString或Format方法可以查找枚举数值中的每个匹配符号,将它们连接为一个字符串,并用逗号分开;Parse方法可用该特性拆分字符串并得到复合的枚举类型
  l
使用格式字符串F或f 也有同样的效果
  下面的示例说明上述情况
  using System;
  
  [Flags]
//定制特性
  public enum Human :byte //定制基本类型
  {
   Male = 0x01,
  
Female = 0x10
  }
  
  public class EnumTest
  {
   public
static void Main()
   {
   Human human = Human.Male | Human.Female;
//人妖?
  
   Console.WriteLine(human.ToString()); //使用Flags定制特性的情况
  
//Console.WriteLine(human.ToString("F")); //没有使用Flags定制特性的情况
  
  
Console.WriteLine(Enum.Format(typeof(Human),human,"G"));//使用Flags定制特性的情况
  
//Console.WriteLine(Enum.Format(typeof(Human),human,
"F"));//没有使用Flags定制特性的情况
  
   human = (Human)Enum.Parse(typeof(Human),
"17");
   Console.WriteLine(human.ToString()); //使用Flags定制特性的情况
  
//Console.WriteLine(human.ToString("F")); //没有使用Flags定制特性的情况
  
}
  }
  
  /*运行结果
  Male,Female
  Male,Female
  Male,
Female
  */

c# 位标记枚举和普通枚举的区别都用那些?什么时候用标记枚举?谢谢.越详细越好. C# 迭代器、枚举器、枚举数有什么区别迭代器是指实现IEnumerator接口的类吗? 枚举器和枚举数跟迭代器有什么关系? 枚举是什么?请问C#中的枚举指的是什么?有什么用?该怎么用?谢谢请问能详细点解释下不? 结构体,共用体和枚举类型的基本特点及区别 “枚举类型”与“枚举变量”有什么区别? 穷举和枚举有什么区别?RT.最好用自己的话简明扼要地概括一下. 枚举类型的用法?主要求解易语言中枚举类型的形式 和用法,真名用才恰当 能给出例子最好. 在C#中,下列关于常量和枚举的说法错误的是()a 使用常量可提高代码的可读性b 常量可以被修改c 枚举的所有成员都是整型,不得使用其他数据类型d 枚举可以看作是一组常量求大神告诉我4个 c#如何快速的根据枚举中的对象的名字获取枚举对象?比如有一个枚举 public enum RmsCode : int { 交通工具类型 = 1, 报销申请时间类型 = 2, 开车情况类型 = 3, 报销单业务状 C#怎么把一个枚举转换成为一个数字? C#什么是枚举呢?说具体一点,谢啦! 求枚举组合算法1-8 的所有6位组合123456124653135721.任意的都要组合,不能漏掉可能组合的任意一组...求完整算法... 什么叫可枚举的集合 2题怎么用枚举法? 枚举变量放在常量元素前和后的区别enum {GRADE,PERCENTAGE,PASS}mode;和enum mode {GRADE,PERCENTAGE,PASS};有什么区别啊? 若有枚举类型定义“enum list {x1,x2,x3,x4=6,x5,x6};则枚举常量下x2和x6代表的是什么 8x+3y=38,不好意思,这个方程要求y和x,x不能大于4,用枚举法,可我弄不明白枚举法怎么用 枚举类型有什么作用?怎么应用?朋友们,告诉我一下,枚举类型在什么方面可以用 到?应该怎么用?我的书上没有写清楚