C#: enum

C#的枚举类型跟C++差不多,一般我们将enum设为单个状态,比如enum color_t { RED, BLACK, GREEN}, 只能选择一个

而有的时候枚举可以作为位运算来进行与或运算,比如ControlStyles这个枚举,看下面一段从TabControlEx中的一段代码

1            base.SetStyle(
2                 ControlStyles.UserPaint |
3                 ControlStyles.OptimizedDoubleBuffer |
4                 ControlStyles.AllPaintingInWmPaint |
5                 ControlStyles.ResizeRedraw |
6                 ControlStyles.SupportsTransparentBackColor,
7                 true);
8             base.UpdateStyles();       

这里我自己写了一段代码来看个别位是否设置了,注意&的优先级要比>小,需要括号起来

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5
 6 namespace test4
 7 {
 8     class Program
 9     {
10         #region
11         public enum person
12         {
13             Id1 = 1,
14             Id2 = 2
15         }
16         #endregion
17         static void Main(string[] args)
18         {
19             person n = person.Id1 | person.Id2;
20             //person n = person.id1;
21             if ((n & person.Id1) > 0) Console.WriteLine("you 1");
22             if ((n & person.Id2) > 0) Console.WriteLine("you 2");
23             if ((n & person.Id1) > 0 && (n & person.Id2) > 0) Console.WriteLine("you 1 he 2");
24             Console.WriteLine(((int)n).ToString());
25         }
26     }
27 }

时间: 2024-10-12 07:02:42

C#: enum的相关文章

java基础:enum枚举

一:enum的用法 (1)JDK1.5之前没有Enum这个类型,那时候一般用接口常量来替代.有了JavaEnum之后,可以更贴近的表示这种常量.  (2)只能取特定值中的一个 (3)使用enum关键字,java.lang.enum(注意java.lang下的类不用导包) (4)枚举对象里面的值都必须是唯一的 二:举例

枚举:enum——初写

入门的时候,针对某一字段状态的判断,一开始是在前端用if else 判断,有一些弊端:①把内置的code暴露给用户②if else最好不要超过3层③前端很长一段冗余判断不规范后改进使用枚举,在后台进行处理,将代码整理如下: (凑字数,忽略...这是一个初夏的季节,今天早上不想起床7:40的闹钟,平时是7:30,然后,用了二十几分钟的时间洗漱,化妆(淡妆)背着电脑出门了,天气有点炎热,路过卖早餐的地方,一点胃口都没有,因为喜欢幻想,幻想一下更恶心了,哈哈哈...夏天是个发瘦的季节(*^__^*)

总是容易忘记:enum、int、string之间的快速转换

public enum Color { Red=1, Green=2 } (1)Enum转换为String Color.Read.ToString() Convert.ToString(Color.Green) (2)Enum转换为int Convert.ToInt32(Color.Green) (a)String转换为Enum (Color)Enum.Parse(typeof(Color), "Red"); (b)Int转换为Num (Color)1 原文地址:https://www

Java枚举enum以及应用:枚举实现单例模式

枚举作为一个常规的语言概念,一直到Java5才诞生不得不说有点奇怪,以至于到现在为止很多程序员仍然更喜欢用static final的形式去命名常量而不使用,一般情况下,Java程序员用这种方式去实现枚举: class EnumByClass{ public static final int RED=0; public static final int GREEN=1; public static final int BLUE=2; } 这种方式实现的枚举也叫int枚举模式,尽管很常用,但是由in

c++模板元编程二:用enum做数值计算

2.1 用enum做数值计算 下面两篇文章都介绍了模板元编程,enum是其最重要的基本工具 http://www.codeproject.com/Articles/3743/A-gentle-introduction-to-Template-Metaprogramming https://www10.informatik.uni-erlangen.de/~pflaum/pflaum/ProSeminar/meta-art.html 因此可以得道以下结论: enum的值由编译器在编译期计算 利用模

编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum

建议110:用类来代替enum 枚举(enum)用来表示一组固定的值.例如,为了表示星期信息,我们可以定义枚举Week: enum Week { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } 枚举最大的优点在于它的类型是值类型.相比较引用类型来说,它可以在关键算法中提升性能,因为它不需要创建在“堆”中.但是,如果不考虑这方面的因素,我们不妨让类(引用类型)来代替枚举.代码如下: class Week { publ

C++11:强类型枚举(enum)

// C++11之前的enum类型是继承C的,不温不火: // C++11对enum动刀了,加强了类型检查,推出强类型enum类型,眼前一亮 // 使用过QT 的都知道,早就应该这么做了,用的非常爽!! // 一.C中enum类型的局限 // 1.非强类型作用域 enum type1{a, b, c}; enum type2{a, d, e}; //问题来了,两种枚举类型都有a枚举常量,并且作用域同样,发生了冲突 //2.同意隐式类型转换 if(type1::a == type2::d){;}

第30条:用enum代替int常量

在java1.5之前,表示枚举类型的常用模式是声明一组具名的int常量,每个类型成员一个常量: public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; public static final int ORANGE_NAVEL = 0; public static final int ORANGE

linux内核探索之内存管理(二):linux系统中的内存组织--结点、内存域和页帧

本文主要参考<深入linux内核架构>(3.2节)及Linux3.18.3内核源码 概述:本文主要描述了内存管理相关的数据结构:结点pg_data_t.内存域struct zone以及页帧(物理页):struct page ,以及该结构相关的一些基本概念. 1. 概述 内存划分为接点,每个结点关联到系统中的一个处理器,在内核中表示为pg_data_t. 各个结点又划分为内存域,比如DMA内存域,高端内存域,普通内存域. 内核内存域的宏: enum zone_type { #ifdef CONF