您的当前位置:首页.NET中的枚举用法浅析

.NET中的枚举用法浅析

2022-06-15 来源:比拉宠物

本文简单分析了.NET中的枚举用法。分享给大家供大家参考。具体分析如下:

我理解的枚举就是编程中约定的一个“可选值”;例如QQ的在线状态,分别有    在线,Q我吧,隐身,忙碌等等。。我觉得这就是一个枚举。

1.普通枚举

1) 实例 代码如下:public enum UserState{ QMe, OnLine, OffLine     //后面省略}

ps:像上边的枚举,可以单独写在一个CS文件中。

2)普通枚举的性质

1. 互斥性

2. 每一个值都有一个数值来表示

3. 枚举在编译时,就已经用数值来表示了。

3)字符串转换成枚举 代码如下:(UserState)Enum.Parse(typeof(UserState),"Red") ;

4)枚举转换成数值、字符串 代码如下:(int)myColor.Red;myColor.Red.ToString();

2.标识枚举

但一个事物具有多个属性时,普通枚举就不够用了。

普通枚举是互斥的,标识而枚举是可以组合的。

1)定义

代码如下://使用以后结果是Tostring()的,而不是数字的。

public enum GoodMan{   高=1,   富=2,   帅=4     //这里必须是2的N次方,切不能重复。}

2)状态组合(或运算) 代码如下:GoodMan winter = GoodMan.高| GoodMan.富| GoodMan.帅;

3)判定winter中是否具有某个枚举值(与运算) 代码如下:if(winter&GoodMan.高==GoodMan.高)

希望本文所述对大家的.net程序设计有所帮助。

小编还为您整理了以下内容,可能对您也有帮助:

了解VB.NET中的常量与枚举功能

    在程序运行的过程中始终固定不变的量称为常量 由于在程序设计和开发时经常会反复地运用一些常数 而且它们代表的含义有时候非常难记 所以每次都需要去核对 如果定义了常量将使之简单化 则可提高代码的可读性及可维护性  注意 不可以任意地修改和赋予新的值

  vB.NET中常量的来源有两种 由用户利用Const语句自定义 或者是系统预先定义的 可以通过菜单中 视图 一 其他窗口 一 对象浏览器 命令或者是同时按Ctrl+Alt+J组合键就可以打开VB.NET 和VBA对象库中的常数列表 这些常数可以与应用程序的对象 方法和属性一起使用 而且每一个ActiveX控件的对象库也定义了单独的常量

  声明常量的语法格式如下

  [Public |  Private |  Friend l Protected |  Pr tected Friend | Const常量名[As类型]=表达式

  .  常量名 任何有效的符号名

  .  表达式 由字符或数值常数以及运算符组成 也可以是结果为数字或者是字符串的表达式 但是表达式中不能够使用函数调用 注意 如果程序中打开了Option strict 则语句需要显式声明常量

  .  Const语句可以声明表示数量 字符串 时间或者是日期的常量 例如

  Const pi= .

  Private Const sum as Inteqer=

  中使用 枚举类型作用域的声明仍然使用Public Private Protected和Friend 例如          Private Enum months        Public Enum months        Protected Enum months  Friend Enum months        Protected Friend Enum months

  在默认状态下 中国自学编程网整理发布 枚举中第一个常量便初始化为O

  其后面的依次比以前的常量大 也可以通过赋值语句对常量进行赋值 此值可以为任何值 包括负数 例如

            Public Enum halfyear        January        February=O        Marth        April        May        June        Invalid=一         End Enum

lishixin/Article/program/net/201311/12411

c#.net 枚举是什么

枚举 (enumeration)

值类型的一种特殊形式,它从 System.Enum 继承,并为基础基元类型的值提供备用名称。枚举类型有名称、基础类型和一组字段。基础类型必须是一个内置的有符号(或无符号)整数类型(如 Byte、Int32 或 UInt64)。字段是静态文本字段,其中的每一个字段都表示常数。所使用的语言给每个字段都分配一个基础类型的特定值。

枚 举(enum)

枚举是一个被命名的整型常数的集合, 枚举在日常生活中很常见。

例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,

SATURDAY, 就是一个枚举。

枚举的说明与结构和联合相似, 其形式为:

enum 枚举名{

标识符[=整型常数],

标识符[=整型常数],

...

标识符[=整型常数],

} 枚举变量;

如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始, 顺

次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后, 其后的成员按依次

加1的规则确定其值。

例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3。

enum string{x1, x2, x3, x4}x;

当定义改变成:

enum string

{

x1,

x2=0,

x3=50,

x4,

}x;

则x1=0, x2=0, x3=50, x4=51

枚举类型的用法?

C/C++中枚举类型(enum)
如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。 举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔合中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它! enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。
在这里要说一下,如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义! enum box{pencil,pen}; enum box box2;//或者简写成box box2;
再有一种就是在声明的时候同时定义。 enum {pencil,pen}box,box2; //在声明的同时进行定义!
枚举变量中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通的算术赋值的,(pencil=1;)这样的写发是错误的,但是你可以在声明的时候进行赋值操作! enum box{pencil=1,pen=2};
但是这里要特别注意的一点是,如果你不进行元素赋值操作那么元素将会被系统自动从0开始自动递增的进行赋值操作,说到自动赋值,如果你只定义了第一个那么系统将对下一个元素进行前一个元素的值加1操作,例如 enum box{pencil=3,pen};//这里pen就是4系统将自动进行pen=4的定义赋值操作!

C++ 中的枚举类型继承于 C 语言。就像其他从 C 语言继承过来的很多特性一样,C++ 枚举也有缺点,这其中最显著的莫过于作用域问题——在枚举类型中定义的常量,属于定义枚举的作用域,而不属于这个枚举类型。例如下面的示例:enum FileAccess {
Read = 0x1,
Write = 0x2,
};FileAccess access = ::Read; // 正确
FileAccess access = FileAccess::Read; // 错误C++枚举的这个特点对于习惯面向对象和作用域概念的人来说是不可接受的。首先,FileAccess::Read 显然更加符合程序员的直觉,因为上面的枚举定义理应等价于如下的定义(实际上,.NET 中的枚举类型便是如此实现的):class FileAccess {
static const int Read = 0x1;
static const int Write = 0x2;
};其次,这导致我们无法在同一个作用域中定义两个同样名称的枚举值。也就是说,以下的代码是编译错误:enum FileAccess {
Read = 0x1,
Write = 0x2,
};enum FileShare {
Read = 0x1, // 重定义
Write = 0x2, // 重定义
};如果这一点没有让你恼怒过的话,你可能还没写过多少 C++ 代码 :-)。实际上,在最新的 C++0x 标准草案中有关于枚举作用域问题的提案,但最终的解决方案会是怎样的就无法未卜先知了,毕竟对于象 C++ 这样使用广泛的语言来说,任何特性的增删和修改都必须十分小心谨慎。当然,我们可以使用一些迂回的方法来解决这个问题(C++ 总是能给我们很多惊喜和意外)。例如,我们可以把枚举值放在一个结构里,并使用运算符重载来*近枚举的特性:struct FileAccess {
enum __Enum {
Read = 0x1,
Write = 0x2
};
__Enum _value; // 枚举值 FileAccess(int value = 0) : _value((__Enum)value) {}
FileAccess& operator=(int value) {
this->_value = (__Enum)value;
return *this;
}
operator int() const {
return this->_value;
}
};我们现在可以按照希望的方式使用这个枚举类型:FileAccess access = FileAccess::Read;并且,因为我们提供了到 int 类型的转换运算符,因此在需要 int 的地方都可以使用它,例如 switch 语句:switch (access) {
case FileAccess::Read:
break;
case FileAccess::Write:
break;
}当然我们不愿意每次都手工编写这样的结构。通过使用宏,我们可以很容易做到这一点:#define DECLARE_ENUM(E) \
struct E \
{ \
public: \
E(int value = 0) : _value((__Enum)value) { \
} \
E& operator=(int value) { \
this->_value = (__Enum)value; \
return *this; \
} \
operator int() const { \
return this->_value; \
} \
\
enum __Enum {#define END_ENUM() \
}; \
\
private: \
__Enum _value; \
};我们现在可以按如下的方式定义前面的枚举,并且不比直接写 enum 复杂多少。DECLARE_ENUM(FileAccess)
Read = 0x1,
Write = 0x2,
END_ENUM()DECLARE_ENUM(FileShare)
Read = 0x1,
Write = 0x2,
END_ENUM()

枚举类型的用法?

C/C++中枚举类型(enum)
如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。 举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔合中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它! enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。
在这里要说一下,如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义! enum box{pencil,pen}; enum box box2;//或者简写成box box2;
再有一种就是在声明的时候同时定义。 enum {pencil,pen}box,box2; //在声明的同时进行定义!
枚举变量中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通的算术赋值的,(pencil=1;)这样的写发是错误的,但是你可以在声明的时候进行赋值操作! enum box{pencil=1,pen=2};
但是这里要特别注意的一点是,如果你不进行元素赋值操作那么元素将会被系统自动从0开始自动递增的进行赋值操作,说到自动赋值,如果你只定义了第一个那么系统将对下一个元素进行前一个元素的值加1操作,例如 enum box{pencil=3,pen};//这里pen就是4系统将自动进行pen=4的定义赋值操作!

C++ 中的枚举类型继承于 C 语言。就像其他从 C 语言继承过来的很多特性一样,C++ 枚举也有缺点,这其中最显著的莫过于作用域问题——在枚举类型中定义的常量,属于定义枚举的作用域,而不属于这个枚举类型。例如下面的示例:enum FileAccess {
Read = 0x1,
Write = 0x2,
};FileAccess access = ::Read; // 正确
FileAccess access = FileAccess::Read; // 错误C++枚举的这个特点对于习惯面向对象和作用域概念的人来说是不可接受的。首先,FileAccess::Read 显然更加符合程序员的直觉,因为上面的枚举定义理应等价于如下的定义(实际上,.NET 中的枚举类型便是如此实现的):class FileAccess {
static const int Read = 0x1;
static const int Write = 0x2;
};其次,这导致我们无法在同一个作用域中定义两个同样名称的枚举值。也就是说,以下的代码是编译错误:enum FileAccess {
Read = 0x1,
Write = 0x2,
};enum FileShare {
Read = 0x1, // 重定义
Write = 0x2, // 重定义
};如果这一点没有让你恼怒过的话,你可能还没写过多少 C++ 代码 :-)。实际上,在最新的 C++0x 标准草案中有关于枚举作用域问题的提案,但最终的解决方案会是怎样的就无法未卜先知了,毕竟对于象 C++ 这样使用广泛的语言来说,任何特性的增删和修改都必须十分小心谨慎。当然,我们可以使用一些迂回的方法来解决这个问题(C++ 总是能给我们很多惊喜和意外)。例如,我们可以把枚举值放在一个结构里,并使用运算符重载来*近枚举的特性:struct FileAccess {
enum __Enum {
Read = 0x1,
Write = 0x2
};
__Enum _value; // 枚举值 FileAccess(int value = 0) : _value((__Enum)value) {}
FileAccess& operator=(int value) {
this->_value = (__Enum)value;
return *this;
}
operator int() const {
return this->_value;
}
};我们现在可以按照希望的方式使用这个枚举类型:FileAccess access = FileAccess::Read;并且,因为我们提供了到 int 类型的转换运算符,因此在需要 int 的地方都可以使用它,例如 switch 语句:switch (access) {
case FileAccess::Read:
break;
case FileAccess::Write:
break;
}当然我们不愿意每次都手工编写这样的结构。通过使用宏,我们可以很容易做到这一点:#define DECLARE_ENUM(E) \
struct E \
{ \
public: \
E(int value = 0) : _value((__Enum)value) { \
} \
E& operator=(int value) { \
this->_value = (__Enum)value; \
return *this; \
} \
operator int() const { \
return this->_value; \
} \
\
enum __Enum {#define END_ENUM() \
}; \
\
private: \
__Enum _value; \
};我们现在可以按如下的方式定义前面的枚举,并且不比直接写 enum 复杂多少。DECLARE_ENUM(FileAccess)
Read = 0x1,
Write = 0x2,
END_ENUM()DECLARE_ENUM(FileShare)
Read = 0x1,
Write = 0x2,
END_ENUM()

c#枚举是什么意思

是一种复合值类型,使用关键字enum来定义,主要表示一组逻辑上相关联的项的集合。

就像你所说的一个星期,星期一到星期天是一组相关联的项。枚举,把这些都举例出来一样。

c#中枚举的作用是什么?

枚举是值类型的数据类型,它包含其自己的值并且不能继承或者传递继承。
例如:你可能要编写一个程序来代表星期。你可以使用整数0,1,2,和3代表周六、周日、周一和周二。这种表示法可以使用,但是会有问题。它不方便。如果代码中使用整数值0,则0不能明确代表是周日还是周六。要克服这样的问题,可以使用枚举。
(以上摘抄自博瑞软件工程师课程)

c#中枚举的作用是什么?

枚举是值类型的数据类型,它包含其自己的值并且不能继承或者传递继承。
例如:你可能要编写一个程序来代表星期。你可以使用整数0,1,2,和3代表周六、周日、周一和周二。这种表示法可以使用,但是会有问题。它不方便。如果代码中使用整数值0,则0不能明确代表是周日还是周六。要克服这样的问题,可以使用枚举。
(以上摘抄自博瑞软件工程师课程)

ASP.NET 中枚举类型 是什么 ?能给些例子么

严格的说,asp.net 实际是.net 平台下web应用程序的一套框架类库

而枚举(System.Enum)则是继承自System.valueType的.net值类型

枚举由int,uint,byte,sbyte,long,ulong,short,ushort这8种基元类型构成基类型,默认为int

典型的例子

enum Week:int {

Monday = 1;

Tuesday = 2;

Wednesday = 3;

Thursday = 4;

Friday = 5;

Saturday = 6;

Sunday = 7;

}

C#中的枚举怎么使用

枚举类型是一种的值类型,它用于声明一组命名的常数。

(1)枚举的声明:枚举声明用于声明新的枚举类型。

访问修辞符 enum 枚举名:基础类型

{

枚举成员

}

基础类型必须能够表示该枚举中定义的所有枚举数值。枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。

(2)枚举成员

枚举成员是该枚举类型的命名常数。任意两个枚举成员不能具有相同的名称。每个枚举成员均具有相关联的常数值。此值的类型就是枚举的基础类型。每个枚举成员的常数值必须在该枚举的基础类型的范围之内。

 示例:

public enum TimeofDay:uint

{

Morning=-3,

Afternoon=-2,

Evening=-1

}

产生编译时错误,原因是常数值 -1、-2 和 –3 不在基础整型 uint 的范围内。

(3)枚举成员默认值

在枚举类型中声明的第一个枚举成员它的默值为零。

以后的枚举成员值是将前一个枚举成员(按照文本顺序)的值加 1 得到的。这样增加后的值必须在该基础类型可表示的值的范围内;否则,会出现编译时错误。

比拉宠物还为您提供以下相关内容希望对您有帮助:

了解VB.NET中的常量与枚举

Const pi= .Private Const sum as Inteqer= 中使用 枚举类型作用域的声明仍然使用Public Private Protected和Friend 例如 Private Enum months Public Enum months Protected Enum months Friend Enum months Protected Friend Enum months 在默认状态下 中国自学编程网整理发布 枚举中第一个常量便初始化为O...

ASP.NET 中枚举类型 是什么 ?能给些例子么

严格的说,asp.net 实际是.net 平台下web应用程序的一套框架类库 而枚举(System.Enum)则是继承自System.valueType的.net值类型 枚举由int,uint,byte,sbyte,long,ulong,short,ushort这8种基元类型构成基类型,默认为int 典型的例子 enum Week:int { Monday = 1;Tuesday = 2;Wednesday = 3;...

在VB.net中的DialogResult.OK代表什么呢?

在VB.net中,DialogResult.OK代表一个对话框的结果,具体表示用户点击了对话框中的“确定”按钮。DialogResult是一个枚举类型,它定义了多种可能的对话框结果,这些结果代表了用户在与对话框交互后可能采取的不同行动。例如,用户可能点击了“确定”、“取消”、“是&...

求大神指点 vb.net 怎么枚举 项下面的所有小项呢

'仅可以在命名空间级别使用 Module。'这意味着模块的声明上下文必须是源文件或命名空间,'而不能是类、结构、模块、接口、过程或块。无法在一个模块或任何类型中嵌套另一个模块。

深入概括VB.NET实现IEnumerator接口

将枚举数设置为其初始位置 该位置位于集合中第一个元素之前 只要集合保持不变 枚举数就将保持有效 如果对集合进行了更改(例如添加 修改或删除元素) 则该枚举数将失效且不可恢复 并且下一次对 MoveNext 或 Reset 的调用将引发InvalidOperationException 下需是一个具体的VB NET实现IEnumerator接口的对像 l...

VB.net如何枚举字符串?

Enum Week 周日 = 0 周一 = 1 周二 = 2 周三 = 3 周四 = 4 周五 = 5 周六 = 6End EnumSub Main() Dim myType As Type = GetType(Week) MsgBox(Week.GetName(myType, Week.周二))End Sub

vb.net中如何定义枚举类型作为对象变量

SQL通常是通过外键。创建一个状态表包含一个状态栏,存储几个固定的状态。然后添加到这个表的外键约束。ALTER TABLE表名WITH CHECK ADD CONSTRAINT fk_status FOREIGN KEY([状态])[状态]([状态])

C# 什么是枚举类型?

System.Enum 本身不是枚举类型。相反,它是一个类类型,所有枚举类型都是从它派生的。System.Enum 从类型 System.ValueType派生 (7)使用枚举类型 using System;public enum TimeofDay { Morning,Afternoon,Evening } class Test { static void WriteGreeting(TimeofDay timeofDay){ switch(timeofDay){ ...

vb.Net中用的数据类型有哪些?有什么区别?

1、整型:Integer、Short、Long、Byte等。2、浮点型:Single、Double、Decimal等。3、字符型:Char类型。4、布尔型:Boolean类型。5、日期型:Date类型。6、字符串型:String类型。7、对象类型:Object类型。8、结构体类型:Structure类型。9、枚举类型:Enum类型。以上数据类型的区别主要在于存储的数据大小...

在VB.net中的DialogResult.OK代表什么呢?

这是一个枚举 表示的是用户按下的是弹出对话框里的OK 这个枚举里还有其他一些表示选择结果的枚举值如:DialogResult.Cancel 等 一般都是这么用的 if SFD.ShowDialog = DialogResult.OK then '点OK后你要执行的代码 else '点取消你要执行的代码 end if ...

Top