`

C#学习之Enum

阅读更多

枚举的好处:

枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。

枚举使代码更清晰,允许用描述性的 名称表示整数值,而不是用含义模糊的数来表示。

枚举使代码更易于键入。

C#枚举中的位运算处理:

常用的位运算主要有与(&), 或(|)和非(~), 比如:

  1 & 0 = 0, 1 | 0 = 1, ~1 = 0

  在设计权限时, 我们可以把权限管理操作转换为C#位运算来处理.

  第一步, 先建立一个枚举表示所有的权限管理操作:


  [Flags]
   publicenumPermissions
  {
  Insert=1,
  Delete=2,
   Update=4,
  Query=8
  }

  [Flags]表示该枚举可以支持C#位运算, 而枚举的每一项值, 我们用2的n次方来赋值, 这样表示成二进制时刚好是1 = 0001, 2 = 0010, 4 = 0100, 8 = 1000等, 每一位表示一种权限, 1表示有该权限, 0表示没有.

  接下来是权限的运算:

  1. 权限的加法, 使用与运算来实现. 我们知道, 0001 | 0100 = 0101, 这样就表示同时具有第一位和第三位的权限管理了, 枚举表示为:

  Permissions per = Permissions.Insert | Permissions.Update

  2. 权限的减法, 使用与运算+非运算来实现, 如上面要去掉Insert权限, 操作为:

  Permissions per &= ~Permissions.Insert即是 0101 & ~0001 = 0101 & 1110 = 0100

  3. 权限的判断, 使用与运算, 当判断用一用户是否具有该操作权限时, 要把用户的的权限与操作权限进行与运算, 如果得到的结果仍是操作权限管理, 则表示用户具有该权限:


  Permissionsper=Permissions.Insert|Permissions.Update;
   if(per&PermissionsPermissions.Insert=Permissions.Insert)
  {
  //有操作权限
  }

  比较过程为 0101 & 0001 = 0001, 0001的0位用与C#位运算把其它位都置成0, 变成只比较1的这一位.


Enum与int和sting的转化:


public enum Fruit
{
Orange,
Apple,
Grape
}

class Program
{
static void Main( string []args)
{
Fruitf1
= Fruit.Apple;
// enum和int互相转换
int i = ( int )f1;
f1
= (Fruit)(i + 1 );
// enum和string互相转换
string s = f1.ToString();
f1
= (Fruit)Enum.Parse(f1.GetType(), " Apple " );

Fruitf2;
f2
= (Fruit)Enum.Parse( typeof (Fruit), " Apple " );
}
}

分享到:
评论

相关推荐

    TestEnum.zip_DEMO_enum学习

    这是我学习C#的Enum时写的一个demo程序,有助于理解

    enum枚举型

    枚举型 的学习和使用

    在一小时内学会 C#(txt版本)

    本文特别适合有 C++ 基础却没有太多精力学习 C# 的读者。 关于作者 Aisha Ikram 我现在在英国一家软件公司任技术带头人。我是计算机科学的硕士。我主要使用 .NET 1.1/2.0, C#, VB.NET, ASP.NET, VC++ 6, MFC, ...

    C# for CSDN 乱七八糟的看不懂

    第4页 C#(WINFORM)学习 } Enum 需要放在 class 外面,才能被其它 class 的程序调用。 C#关键字 关键字 abstract as base bool break byte case catch char checked class const continue decimal default ...

    C# 3.0完全自学宝典 (F)

    示例描述:学习C#基本语法实例。 CharString 演示字符和字符串的使用 Enum 演示枚举类型的使用 FuncOverride 演示函数重载的使用 Integer 演示数值类型的使用 UseArray 演示数组定义和使用 UseFuc 演示函数的...

    C#如何给枚举类型增加一个描述特性详解

    主要给大家介绍了关于C#如何给枚举类型增加一个描述特性的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    快速学习c# 枚举

    一、在学习枚举之前,首先来听听枚举的优点。  1、枚举能够使代码更加清晰,它允许使用描述性的名称表示整数值。  2、枚举使代码更易于维护,有助于确保给变量指定合法的、期望的值。  3、枚举使代码更易输入。 ...

    分享自己使用多年的一个经典版c#excelhelper源代码,在多个软件中使用

    分享使用多年的一个经典版c#excelhelper源代码,共同学习,在多个软件中使用 部分代码摘录如下,提供大家了解后再按需下载 enum SaveAsFileFormat { HTML, CSV, TEXT, EXCEL, XML } /// /// 常用颜色...

    C#实现获取枚举中元素个数的方法

    本文以一个简单实例讲述了C#实现获取枚举中元素个数的方法,对于C#学习来说是需要加以牢固掌握的技巧。分享给大家供大家参考之用。具体如下: 实现该功能可以使用枚举基类System.Enum的GetNames(Type t) 方法来获取...

    通过表格中数据自动生成枚举和方法(内涵使用教程)

    读取Excel表格中的数据,通过表格中给定的数据来创建相对应的枚举和相对应的方法 工具包中内涵使用教程,代码简单易懂,可学习,可商用!!!

    C# 语言规格说明(English Edition第五版)

    建议作为平时学习阅读之用 目录: Table of Contents 1. Introduction 1 1.1 Hello world 1 1.2 Program structure 2 1.3 Types and variables 4 1.4 Expressions 6 1.5 Statements 8 1.6 Classes and objects 12 ...

    c# 钩子学习笔记

    代码如下: public class SetHook { public class HookTypes { /// <summary> /// 钩子类型 /// </summary> public enum HookType { WH_JOURNALRECORD = 0,//对寄送至消息队列的输入消息进行记录 WH_GETMESSAGE = 3,...

    轻松学习C#的装箱与拆箱

     值类型,包括原类型(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、枚举 (enum) 、结构 (struct)。  引用类型包括类、数组、接口、委托、字符串等。 装箱:值类型...

    C#通过PInvoke调用c++函数的备忘录的实例详解

    主要介绍了C#通过PInvoke调用c++函数的备忘录的实例以及相关知识点内容,有兴趣的朋友们学习下。

    C#语言规范(4.0版本)

    Microsoft(微软)C#语言规范4.0版本,非常值得大家学习收藏! 目录 1. 简介 1 1.1 Hello world 1 1.2 程序结构 2 1.3 类型和变量 3 1.4 表达式 6 1.5 语句 8 1.6 类和对象 12 1.6.1 成员 12 1.6.2 可访问性 13 1.6.3 ...

    理解C#中的枚举(简明易懂)

    一、在学习枚举之前,首先来听听枚举的优点。  1、枚举能够使代码更加清晰,它允许使用描述性的名称表示整数值。  2、枚举使代码更易于维护,有助于确保给变量指定合法的、期望的值。  3、枚举使代码更易输入。 ...

    C# 函数覆盖总结学习(推荐)

    覆盖类成员:通过new关键字修饰虚函数表示覆盖该虚函数。 一个虚函数被覆盖后,任何父类变量都不能访问该虚函数的具体实现。 public virtual void IntroduceMyself(){…}//父类虚函数 ... public enum Genders {

    C#深浅拷贝的深入解析

    前面我们学习完了设计模式,在其中我们有了解到原型模式。这里涉及到了克隆自身对象。那么也就是对对象进行拷贝。这里就涉及到了这么一个概念。深浅拷贝、何为深拷贝何为浅拷贝呢?我们一起来看看吧。 浅拷贝 首先...

    Addin开发学习笔记(一).docx

    Bentley MSTN V8i C# Addin 二次开发时整理的一些方法 1.动态获取精确绘图坐标系,并动态旋转 2.GetElementByID Method 3.SelectElements Method 4.MsdMemberTraverseType Enum 5.选中元素 6 已知Rotation 求绕各个...

    枚举类型的使用

    本代码是本人学习中一些笔记,希望对你有帮助!!

Global site tag (gtag.js) - Google Analytics