文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C# 枚举的使用简介

2024-04-02 19:55

关注

枚举这个名词大家都听过,很多小伙伴也使用过,

那么枚举在开发中能做什么,使用它后能给程序代码带来什么改变,为什么用枚举。

各位看官且坐下,听我一一道来。

为什么使用枚举?

1、枚举能够使代码更加清晰,它允许使用描述性的名称表示整数值。

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

3、枚举使代码更易输入和读取。

枚举有哪些用法?

1、简单枚举

2、标志枚举

1、简单枚举

  C#提供类一个类来方便操作枚举,下面给出这个类的常用方法:

C#枚举常用方法

方法 名称
CompareTo 将此实例与指定对象进行比较并返回一个对二者的相对值的指示
Equals 指示此实例是否等于指定的对象
Format 根据指定格式将指定枚举类型的指定值转换为其等效的字符串表示形式
GetName 在指定枚举中检索具有指定值的常数的名称
GetNames 检索指定枚举中常数名称的数组
GetNames 检索指定枚举中常数名称的数组
GetTypeCode 返回此实例的基础 TypeCode
GetUnderlyingType 返回指定枚举的基础类型
GetValues 索指定枚举中常数值的数组
HasFlag 确定当前实例中是否设置了一个或多个位域
IsDefined 返回指定枚举中是否存在具有指定值的常数的指示
Parse

将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 一个参数指定该操作是否不区分大小写

TryParse

将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 用于指示转换是否成功的返回值

如果要显示指定枚举的底层数据类型很简单,只需在声明枚举的时候加个冒号,后面紧跟要指定的数据类型(可指定类型有:byte、sbyte、short、ushort、int、uint、long、ulong)。

显式设置枚举的成员常量值,默认是从0开始,逐个递增的。但是以下例子却设置成了1,2,3,0。而且成员值可以一样的。

如下示例:由枚举值获取枚举名称与由枚举名称获取枚举值


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace enumApplication
{
 class Program
 {
 static void Main(string[] args)
 {
  //输出方式一:
  Console.WriteLine("我是四大名著之一的:" + Enum.GetName(typeof(Man), 1)); //西游记(是哪个名著由值获取)

  //输出方式二:
  string[] array1 = Enum.GetNames(typeof(Man));
  Console.WriteLine("我是四大名著之一的:" + array1[2]); //红楼梦(是哪个名著由值获取)

  //输出方式三:
  Array array2 = Enum.GetValues(typeof(Man));
  Console.WriteLine("我是四大名著之一的:" + array2.GetValue(3)); //三国演义(是哪个名著由值获取)

  //输出方式四:
  Type t = Enum.GetUnderlyingType(typeof(Man));
  Console.WriteLine("我输出的是值类型:"+t); //输出 Int32

  //输出方式五:由值获取内容
  int i = 0;
  string Name = Enum.Parse(typeof(Man), i.ToString()).ToString(); //此时 Name="水浒传"
  Console.WriteLine("我是四大名著之一的:" + Name);

  //输出方式六:由值获取内容
  string Name2 = "红楼梦";
  int j = Convert.ToInt32(Enum.Parse(typeof(Man), Name2)); //此时 j=2
  Console.WriteLine("我是《红楼梦》对应的值序号:"+j);

  Console.ReadKey();
 }
 enum Man:int //四大名著枚举
 {
  西游记 = 1,
  红楼梦 = 2,
  三国演义 = 3,
  水浒传 = 0
 }
 }
}

2、标志枚举

标志枚举要在顶部加[System.Flags]特性进行声明。而且枚举支持组合运算。

这种位运算是非常有用的,在sql语句里也支持位运算。也就是说,把一个枚举运算后的结果存入数据库之后,还能够按照你的要求读取出来。比如:

将一个"高帅"存如数据库的值存入数据库,那么存入去的就是整型5。


select * from Table where Column & 1 = 1  //Column 是列名

select * from Table1 where Column  | 1 = Column 

如下demo:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace enumApplication
{
 class Program
 {
 static void Main(string[] args)
 {
  var man = People.高 | People.帅; //赋值为101 计算方法001或上100,结果是101
  Console.WriteLine("高和帅的枚举值和为:"+(int)man);
  if ((man & People.高) == People.高) //101 man 
  {     //001 高 逐位相与,
  Console.WriteLine("此人:高"); //001 如果结果是高,就可以反推出man包含 高
  }
  else
  {
  Console.WriteLine("此人:矮");
  }
  Console.ReadKey();
 }

 [System.Flags]
 public enum People:int 
 {
  高 = 1, //001
  富 = 2, //010
  帅 = 4, //100
 }
 }
}

3、枚举使用的一些建议

枚举用好了还是蛮方便的,大家不妨去试试。

以上就是C# 枚举的使用简介的详细内容,更多关于C# 枚举的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯