C#语法小知识(三)枚举类型enum

2023-05-16

枚举类型声明一系列常数,用于表示这个类型的变量可能会在这些常数里变化。

我们在这篇文章里讲一下枚举类型的几个用法。
一个简单的枚举类型的定义:
enum TestEnum
{
	x,
	y,
	z,
}

而使用也很简单:
		TestEnum a = TestEnum.x;
		if (a == TestEnum.x) {
			//Do someting
		}

也经常跟switch case搭配使用:
		TestEnum b = TestEnum.x + 10;
		switch (b) {
		case TestEnum.x:
			//do sth
			break;
		case TestEnum.y:
			//do sth
			break;
		case TestEnum.z:
			//do sth
			break;
		default:
			//do sth
			break;
		}
因为枚举类都继承自System.Enum,而后者实现了与int,byte,short等整数类型的相互转换,所以可以写成这样:
		TestEnum c = (TestEnum)10;
		int i = (int)c;
但是System.Enum,只实现了枚举转float,double等浮点类型的接口,却没有实现浮点类型转枚举的接口,所以转换的时候会先转换成整形,再转换成枚举。
		TestEnum d = (TestEnum)1.414f;
		float j = (float)d;
上面这段代码,打印d和j分别会显示y和3。

上面都是基本的用法,这里要说一些进阶的用法。
枚举作为位标志:
[System.Flags]
enum TestFlagEnum
{
	o = 0x0,
	x = 0x1,
	y = 0x2,
	z = 0x4,
}

用法就是为做位运算:
TestFlagEnum e = TestFlagEnum.x | TestFlagEnum.y;//赋值
打印e,就会显示x,y。
如果要判定的话:
bool isX = (e & TestEnum.x) == TestFlagEnum.x;
另外一种用法就是,获取枚举值的名称:
string name = System.Enum.GetName (typeof(TestFlagEnum), 3);
这里会name会是null,而如果把第二个参数改为2的话,name就会是y。
还有获取所有枚举值名称的方法:
string[] enumStrings = System.Enum.GetNames (typeof(TestFlagEnum));
那么逆操作是怎么样的呢?
通过string获取枚举值:
TestFlagEnum val = (TestFlagEnum)System.Enum.Parse (typeof(TestFlagEnum), "x");
但是如果把第二个参数改为一个不存在对应枚举值的string,便会报错,所以我们需要使用TryParse方法,但是旧版本的.NET(例如Unity3D)并不支持这个方法,因此做这项操作的时候要格外的注意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#语法小知识(三)枚举类型enum 的相关文章

  • Enum枚举前后端传输展示方案

    1 定义枚举类型 public enum RolesTypeEnum implements Enumerator MANAGER 34 管理员 34 0 BUSINESS 34 招商员工 34 1 PROPERTY 34 物业员工 34 2
  • c++ enum class转int

    示例 enum class 定义 span class token keyword enum span span class token keyword class span span class token class name Colo
  • C#中Enum枚举类型的简单使用

    枚举类型的介绍 xff1a 枚举类型是由一组特定常量构成的一组数据结构 xff0c 是值类型的一种特殊形式 xff0c 当需要一个由指定常量集合组成的数据类型时 xff0c 使用枚举类型 枚举声明可以显式地声明 byte sbyte sho
  • C++枚举类型

    枚举类型是C 43 43 中一种派生数据类型 xff0c 它是由用户定义的若干枚举常量的几个 定义格式 xff1a enum lt 类型名 gt lt 枚举常量表 gt 举例 xff1a enum color set RED BULE WH
  • C++遍历输出enum枚举类型

    enum DAY MON TUE WED THU FRI SAT SUN 问题 如果使用如下方式来遍历 xff0c 则编译器会报类型转换失败错误 xff0c 因为enum类型没有 43 43 运算符 xff0c 也不支持 43 运算 for
  • 枚举(enum)

    一 什么是枚举 我们学习过单例模式 xff0c 即一个类只有一个实例 而枚举其实就是多例 xff0c 一个类有多个实例 xff0c 但实例的个数不是无穷的 xff0c 是有限个数的 例如word文档的对齐方式有几种 xff1a 左对齐 居中
  • C 语言使用宏自定义可打印的枚举(enum) 类型

    1 前言 xff1a 说点废话 xff0c 时间紧的请直接跳过 xff0c 看后面的实现 尽管本人很反感 C 语言中的宏定义 xff0c 特别是滥用宏定义经常会让问题变的扑朔迷离 xff0c 但是不得不承认 xff0c 在某些时候 xff0
  • C语言枚举类型(C语言enum用法)详解

    在实际编程中 xff0c 有些数据的取值往往是有限的 xff0c 只能是非常少量的整数 xff0c 并且最好为每个值都取一个名字 xff0c 以方便在后续代码中使用 xff0c 比如一个星期只有七天 xff0c 一年只有十二个月 xff0c
  • C++中enum与字符串或CString互相转换的方法

    C 43 43 中没有专门为enum与字符串或CString互相转换的直接方法 xff0c 但是工作中会常遇到相互转换的场景 下面介绍一种自己实现的方法 xff0c 首先得定义一个enum类型 xff0c 同时 xff0c 定义一个与之对应
  • 推荐一个C++枚举转字符串的开源项目magic_enum

    文章目录 前言magic enum简单介绍具体使用原理简述局限性 简化与改进总结 前言 C 43 43 11引入了强类型的枚举类 enum class 用来代替旧风格枚举enum xff0c 新引入的 enum class 具有诸多优点 x
  • c++打印enum class

    span class token keyword enum span span class token keyword class span span class token class name A span span class tok
  • mysql枚举类型

    1 使用枚举类型的好处 对数据进限定 xff0c 增加其安全性查询速度更快操作更加方便 2 枚举类型的应用 创建 test 数据库 create database span class token function test span ch
  • 【Mybatis】No enum constant org.apache.ibatis.type.JdbcType.LONG

    问题描述 xff1a 今天编写定时任务管理模块 xff0c 提交定时任务实体信息时 xff0c 提示如下错误 nested exception is org apache ibatis builder BuilderException Er
  • 深入理解Java枚举类型(enum)

    版权申明 未经博主同意 xff0c 谢绝转载 xff01 xff08 请尊重原创 xff0c 博主保留追究权 xff09 http blog csdn net javazejian article details 71333103 出自 z
  • Java枚举的使用

    枚举类型可以取代以往常量的定义方式 即将常量封装在类或接口中 此外 枚举类型还提供了安全检查功能 枚举类型本质上还是以类的形式存在 1 使用枚举类型设置常量 以往设置常量 通常将常量放置在接口中 这样在程序中就可以直接使用了 并且该常量不能
  • IOS_Swift_enum枚举方法

    本博文为子墨原创 转载请注明出处 http blog csdn net zimo2013 article details 50116811 enum Type Int case A 1 case B 3 普通方法 func toString
  • 从枚举类型的ordinal()方法说起

    文章背景 本周有一个开发任务涉及到了枚举类型的修改 需要对枚举类型新增一项 在新增的时候我没有加在已有项的最后面 而是在中间随便找了个位置 其实也不是很随便 我是根据语义关联性觉得放在某一项后面比较合适 没想到的是 我的无心之举经造成了大
  • Java,Enum里定义属性和方法

    最近的项目用到了大神写的统一返回码的代码 ErrorCode java 统一6位 异常码 author Administrator public enum ErrorCode global OK 000000 操作成功 ERROR 0000
  • C# 枚举 enum(学习心得 17)

    枚举是一组命名整型常量 枚举类型是使用 enum 关键字声明的 C 枚举是值类型 枚举包含自己的值 且不能继承或传递继承 超级小白友好 讲解C 基础 每集5分钟轻松学习 拒绝从入门到放弃 声明 enum
  • C语言枚举类型的大小

    主流编译器如 gcc vc MinGW gcc等枚举变量均为4字节 少量编译器会根据枚举个数做优化 如只有3个枚举值时 size可能为1 enum长度不确定会带来可移植性问题 如果第三方库API接口使用enum类型 编译和调用库时一旦有关e

随机推荐