枚举的好处:
枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。
枚举使代码更清晰,允许用描述性的
名称表示整数值,而不是用含义模糊的数来表示。
枚举使代码更易于键入。
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
"
);
}
}
分享到:
相关推荐
这是我学习C#的Enum时写的一个demo程序,有助于理解
枚举型 的学习和使用
本文特别适合有 C++ 基础却没有太多精力学习 C# 的读者。 关于作者 Aisha Ikram 我现在在英国一家软件公司任技术带头人。我是计算机科学的硕士。我主要使用 .NET 1.1/2.0, C#, VB.NET, ASP.NET, VC++ 6, MFC, ...
第4页 C#(WINFORM)学习 } Enum 需要放在 class 外面,才能被其它 class 的程序调用。 C#关键字 关键字 abstract as base bool break byte case catch char checked class const continue decimal default ...
示例描述:学习C#基本语法实例。 CharString 演示字符和字符串的使用 Enum 演示枚举类型的使用 FuncOverride 演示函数重载的使用 Integer 演示数值类型的使用 UseArray 演示数组定义和使用 UseFuc 演示函数的...
主要给大家介绍了关于C#如何给枚举类型增加一个描述特性的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
一、在学习枚举之前,首先来听听枚举的优点。 1、枚举能够使代码更加清晰,它允许使用描述性的名称表示整数值。 2、枚举使代码更易于维护,有助于确保给变量指定合法的、期望的值。 3、枚举使代码更易输入。 ...
分享使用多年的一个经典版c#excelhelper源代码,共同学习,在多个软件中使用 部分代码摘录如下,提供大家了解后再按需下载 enum SaveAsFileFormat { HTML, CSV, TEXT, EXCEL, XML } /// /// 常用颜色...
本文以一个简单实例讲述了C#实现获取枚举中元素个数的方法,对于C#学习来说是需要加以牢固掌握的技巧。分享给大家供大家参考之用。具体如下: 实现该功能可以使用枚举基类System.Enum的GetNames(Type t) 方法来获取...
读取Excel表格中的数据,通过表格中给定的数据来创建相对应的枚举和相对应的方法 工具包中内涵使用教程,代码简单易懂,可学习,可商用!!!
建议作为平时学习阅读之用 目录: 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 ...
代码如下: public class SetHook { public class HookTypes { /// <summary> /// 钩子类型 /// </summary> public enum HookType { WH_JOURNALRECORD = 0,//对寄送至消息队列的输入消息进行记录 WH_GETMESSAGE = 3,...
值类型,包括原类型(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、枚举 (enum) 、结构 (struct)。 引用类型包括类、数组、接口、委托、字符串等。 装箱:值类型...
主要介绍了C#通过PInvoke调用c++函数的备忘录的实例以及相关知识点内容,有兴趣的朋友们学习下。
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 ...
一、在学习枚举之前,首先来听听枚举的优点。 1、枚举能够使代码更加清晰,它允许使用描述性的名称表示整数值。 2、枚举使代码更易于维护,有助于确保给变量指定合法的、期望的值。 3、枚举使代码更易输入。 ...
覆盖类成员:通过new关键字修饰虚函数表示覆盖该虚函数。 一个虚函数被覆盖后,任何父类变量都不能访问该虚函数的具体实现。 public virtual void IntroduceMyself(){…}//父类虚函数 ... public enum Genders {
前面我们学习完了设计模式,在其中我们有了解到原型模式。这里涉及到了克隆自身对象。那么也就是对对象进行拷贝。这里就涉及到了这么一个概念。深浅拷贝、何为深拷贝何为浅拷贝呢?我们一起来看看吧。 浅拷贝 首先...
Bentley MSTN V8i C# Addin 二次开发时整理的一些方法 1.动态获取精确绘图坐标系,并动态旋转 2.GetElementByID Method 3.SelectElements Method 4.MsdMemberTraverseType Enum 5.选中元素 6 已知Rotation 求绕各个...
本代码是本人学习中一些笔记,希望对你有帮助!!