C#与C++枚举的区别对比和使用案例

C++与C#中枚举的区别

一、C++

  • 枚举类型中的每个元素,可以直接使用,不必通过类型.元素的方式调用
  • 没有++操作
#include <iostream>
using namespace std;
enum week{Monday,Thuesday};
int main()
{
    week day;
    day = Monday;
    day = Thuesday;
    //day = 4;  报错 类型转化出错
    //day++;   出错,没有++ 操作
    cout << day << endl;//输出结果为1
    return 0;
}

二、C#

  • 枚举类型中的每个元素必须通过类型.元素的形式调用
  • 可以++操作
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace myEnum_Structure
{
    enum Week
    {
        Monday,
        Thuesday,
        Wednesday,
        Thursday,
        Friday,
        Saturday,
        Sunday
    }
    class Program
    {
        static void Main(string[] args)
        {
            Week day;
            day = Week.Sunday;
            Console.WriteLine(day);//输出Sunday
            day++;
            Console.WriteLine(day);//输出7
        }
    }
}

C#枚举案例

一、普通调用

        public enum NoticeType
        {
            Notice = 'A',
            LabRule = 'H',
            HotInformation = 'N',
            Column = 'C',
            All = '1',
            Null = '0'
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //新建枚举类型
            NoticeType noticeType1 = NoticeType.Column;

            //把枚举类型转换为string d="Column"
            string d = noticeType1.ToString();

            //取得枚举类型的基数 'C'
            char dd = (char)noticeType1;

            //通过基数取得对应的枚举类型
            NoticeType noticeType2 = (NoticeType)Char.Parse("A");//Notice

            //通过名称取得枚举类型
            NoticeType noticeType3 = (NoticeType)Enum.Parse(typeof(NoticeType), "Notice");
        }

二、获取描述信息

 		[Description("会员等级")]
        enum MemberLevel
        {
            [Description("金牌会员")]
            gold = 1,
            [Description("银牌会员")]
            silver = 2,
            [Description("铜牌会员")]
            copper = 3
        }

        /// <summary>
        ///
        /// </summary>
        /// <param name="value">枚举值</param>
        /// <param name="isTop">是否是顶级标题的描述信息</param>
        /// <returns></returns>
        public static string GetDescription(this Enum value, bool isTop = false)
        {

            Type enumType = value.GetType();
            DescriptionAttribute attr = null;
            if (isTop)
            {
                attr = (DescriptionAttribute)Attribute.GetCustomAttribute(enumType, typeof(DescriptionAttribute));
            }
            else
            {
                // 获取枚举常数名称。
                string name = Enum.GetName(enumType, value);
                if (name != null)
                {
                    // 获取枚举字段。
                    FieldInfo fieldInfo = enumType.GetField(name);
                    if (fieldInfo != null)
                    {
                        // 获取描述的属性。
                        attr = Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute), false) as DescriptionAttribute;
                    }
                }
            }

            if (attr != null && !string.IsNullOrEmpty(attr.Description))
                return attr.Description;
            else
                return string.Empty;
        }

调用

     		MemberLevel gold = MemberLevel.gold;
            Console.WriteLine(gold.GetDescription());
            System.Console.Read();

到此这篇关于C#与C++枚举的区别对比和使用案例的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C# 枚举的使用简介

    枚举这个名词大家都听过,很多小伙伴也使用过, 那么枚举在开发中能做什么,使用它后能给程序代码带来什么改变,为什么用枚举. 各位看官且坐下,听我一一道来. 为什么使用枚举? 1.枚举能够使代码更加清晰,它允许使用描述性的名称表示整数值. 2.枚举使代码更易于维护,有助于确保给变量指定合法的.期望的值. 3.枚举使代码更易输入和读取. 枚举有哪些用法? 1.简单枚举 2.标志枚举 1.简单枚举 枚举使用enum关键字来声明,与类同级.枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符.

  • C#枚举类型与结构类型实例解析

    本文以C#实例讲解了枚举类型与结构类型的用法,程序主要是通过个人电话本演示枚举类型与结构类型的用法,具体代码如下所示: using System; class ID { //定义枚举类型 public enum Sex { male, female };//注意别忘了这里的分号 //定义电话本的结构类型 public struct TelBook { public string name; public Sex sex;//性别类型为枚举类型 public string number; } //

  • C# 枚举类型的声明和使用

    目录 前言 相关介绍 一.枚举声明 二.声明位置 三.枚举使用 总结 前言 学习记录下枚举的声明和使用,枚举可用来规范开发 文章中代码的项目名为Project1,C#类名为Class1 相关介绍 微软官方C#函数文档 一.枚举声明 声明的方式:enum [枚举名] {值1, 值2, ..., 值n} 对于最后一个值,逗号可以写,也可以不写对于文字,值不需要使用引号引起来 enum Gender { 男, 女 } 二.声明位置 可以声明在namespace命令空间内 using System; u

  • C#中变量、常量、枚举、预处理器指令知多少

    一.变量 C#共有其中变量类型有:静态变量.实类变量.数组元素.数值参数.引用参数.输出参数和局部变量 先定义一个简单的类来说明,如下: public class VariableDefine { private static uint variableUInt; public static uint VariableUInt { get => variableUInt; set => variableUInt = value; } string VariableStr; public Var

  • 深入理解C#之枚举

    目录 一.在学习枚举之前,首先来听听枚举的优点. 二.枚举说明 1.简单枚举 2.标志枚举 三.枚举的使用建议 总结 一.在学习枚举之前,首先来听听枚举的优点. 1.枚举能够使代码更加清晰,它允许使用描述性的名称表示整数值. 2.枚举使代码更易于维护,有助于确保给变量指定合法的.期望的值. 3.枚举使代码更易输入. 二.枚举说明 1.简单枚举 枚举使用enum关键字来声明,与类同级.枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符.枚举本身的修饰符仅能使用public和inter

  • C#枚举类型和结构体详解

    注意:枚举类型和结构体都属于值类型. 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的方法: struct student { public int nianling; public int fenshu; public string name; public string sex; public int sum; } 以上的语句就是定义一个名称为student的结构体,其中包含int类型的年龄.分数.总和,和string类型的姓名.性别. 二.用法: 在

  • 快速学习c# 枚举

    一.在学习枚举之前,首先来听听枚举的优点. 1.枚举能够使代码更加清晰,它允许使用描述性的名称表示整数值. 2.枚举使代码更易于维护,有助于确保给变量指定合法的.期望的值. 3.枚举使代码更易输入. 二.枚举说明 1.简单枚举 (1)枚举使用enum关键字来声明,与类同级.枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符.枚举本身的修饰符仅能使用public和internal. (2)枚举是值类型,隐式继承自System.Enum,不能手动修改.System.Enum本身是引用类

  • C# 实现枚举转列表

    今天有朋友问我,ComboBox 怎么绑定一个 Enum,其实他的意思是枚举如何转换为列表.想想这确实是一个挺正常的需求,但我一时也只想到遍历,他觉得麻烦,于是我在网上帮忙查了一下,提取了三个方法,后来在常用代码工具库也看到一个方法,所以总共四个方法,分为两组,功能可以说都是一样的,就是形式不同,现在分享给大家. #region 获取枚举列表 /// <summary> /// 通过枚举对象获取枚举列表 /// </summary> /// <typeparam name=&

  • C# 枚举Color并展示各种颜色效果的示例

    本文主要介绍了C# 枚举Color并展示各种颜色效果,分享给大家,具体如下: 本方法枚举Color以展示各颜色效果,方便为控件选择合适的颜色.本例需要在窗体项目中使用,通过创建ListView控件展示,代码如下: private void displayColor() { Control listControl = this.Controls["listView_Color"]; if (listControl != null) { listControl.Visible = true

  • 简述C#枚举高级战术

    文章开头先给大家出一道面试题: 在设计某小型项目的数据库(假设用的是 MySQL)时,如果给用户表(User)添加一个字段(Roles)用来存储用户的角色,你会给这个字段设置什么类型?提示:要考虑到角色在后端开发时需要用枚举表示,且一个用户可能会拥有多个角色. 映入你脑海的第一个答案可能是:varchar 类型,用分隔符的方式来存储多个角色,比如用 1|2|3 或 1,2,3 来表示用户拥有多个角色.当然如果角色数量可能超过个位数,考虑到数据库的查询方便(比如用 INSTR 或 POSITION

  • C# 从枚举值获取对应的文本描述详解

    C# 从枚举值获取对应的文本描述详解 有时枚举值在显示时,需要显示枚举值对应的文本串.一种方案是在调用的地方使用switch或者if来判断枚举值,然后赋给不同的文本串,但这样一来,如果有较多的地方都用到的时候就会比较麻烦.当然有人说,这种情况下,可以针对这种枚举值封装一个方法,然后来调用.那如果有多个枚举类型都有这样的需求呢?有没有什么比较通用的解决办法?有的. 这里需要用到Description属性,给每个枚举值都赋上一个该属性,然后在该属性中赋上要描述的文本串.比如 #region YesN

  • C#枚举的高级应用

    文章开头先给大家出一道面试题: 在设计某小型项目的数据库(假设用的是 MySQL)时,如果给用户表(User)添加一个字段(Roles)用来存储用户的角色,你会给这个字段设置什么类型?提示:要考虑到角色在后端开发时需要用枚举表示,且一个用户可能会拥有多个角色. 映入你脑海的第一个答案可能是:varchar 类型,用分隔符的方式来存储多个角色,比如用 1|2|3 或 1,2,3 来表示用户拥有多个角色.当然如果角色数量可能超过个位数,考虑到数据库的查询方便(比如用 INSTR 或 POSITION

  • C#中可枚举类型详解

    枚举是迭代一个集合中的数据项的过程. 我们经常使用的大多数集合实际上都已经实现了枚举的接口IEnumerable和IEnumerator接口,这样才能使用foreach迭代,有些是含有某种抽象了枚举细节的接口:ArrayList类型有索引,BitArray有Get方法,哈希表和字典有键和值..........其实他们都已经实现了IEnumerable和IEnumerator接口.所以一切的集合和数组都可以用IEnumerable或者IEnumerable<T>接口来定义. IEnumerabl

随机推荐