苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

分布式系统框架(V1.3) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper万能框架(V2.3) HttpHelper官方出品,无敌框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V1.9) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 14431|回复: 42

[C#基语法] [C#基语法]之C#枚举类型深入浅出

[复制链接]
  • TA的每日心情
    开心
    昨天 09:05
  • 签到天数: 643 天

    [LV.9]以坛为家II

    发表于 2013-5-27 09:49:07 | 显示全部楼层 |阅读模式
                             [C#基语法]之C#枚举类型深入浅出
    系列文章导航

      [C#基语法]苏飞传奇版   http://www.sufeinet.com/thread-3091-1-1.html

    先来看看给它下的定义和规则

    1.C#枚举类型是一种值类型,它用于声明一组命名的常数
    2.枚举的成员是该枚举类型的命名常数。任意两个枚举成员不能具有相同的名称。每个枚举成员均具有相关联的常数值。此值的类型就是枚举的基础类型。每个枚举成员的常数值必须在该枚举的基础类型的范围之内。
    3.枚举类型能选择的基础类型有:byte,sbyte,shout,ushout,int,uint,long,ulong ,默认的为int
    语法

         
    [C#] 纯文本查看 复制代码
       访问修辞符 enum 枚举名:基础类型
        {
            枚举成员
        }

          我们以颜色类型为例子来设置一个枚举
    比如有Red,Blue,Orange三种颜色
    1.直接显式设置类型
    [C#] 纯文本查看 复制代码
     /// <summary>
        /// 颜色枚举
        /// </summary>
        public enum SkinType : int
        {
            /// <summary>
            /// Red
            /// </summary>
            Red = 1,
            /// <summary>
            /// Blue
            /// </summary>
            Blue = 2,
            /// <summary>
            /// Orange
            /// </summary>
            Orange = 3
        }

    这样是显式设置了枚举的基础类型
    当然默认的也是int类型。
    2.以默认值方式设置枚举类型的值
    [C#] 纯文本查看 复制代码
      /// <summary>
        /// 颜色枚举
        /// </summary>
        public enum SkinType : int
        {
            /// <summary>
            /// Red
            /// </summary>
            Red,
            /// <summary>
            /// Blue
            /// </summary>
            Blue,
            /// <summary>
            /// Orange
            /// </summary>
            Orange
        }

    在枚举类型中声明的第一个枚举成员它的默值为零。
            以后的枚举成员值是将前一个枚举成员(按照文本顺序)的值加 1 得到的。这样增加后的值必须在该基础类型可表示的值的范围内;否则,会出现编译时错误。
    Red=0
    Blue=1
    Orange=2
    这样是不是也很方便
    用法

    使用方法其实也很简单,就像使用属性一样
    [C#] 纯文本查看 复制代码
     string colorName = "";
                //获取颜色的名称
                switch (SkinType)
                {
                    case SkinType.Red:
                        colorName = "Red";
                        break;
                    case SkinType.Blue:
                        colorName = "Blue";
                        break;
                    case SkinType.Orange:
                        colorName = "Orange";
                        break;
                    default:
                        colorName = "";
                        break;
                }

    获取值
    [C#] 纯文本查看 复制代码
     int SkinValue = 0;
                //获取颜色的值
                switch (SkinType)
                {
                    case SkinType.Red:
                        SkinValue = Convert.ToInt32(SkinType.Red);
                        break;
                    case SkinType.Blue:
                        SkinValue = Convert.ToInt32(SkinType.Blue);
                        break;
                    case SkinType.Orange:
                        SkinValue = Convert.ToInt32(SkinType.Orange);
                        break;
                    default:
                        SkinValue = 0;
                        break;
                }

    好处和为什么要使用枚举类型

    1.在写代码上比较规范这是我的认知,再就是非常的方便 ,比如上面的switch 语句中,下面的每个Case可不是我写出来是自动生成的,只要你填写一个枚举类型,下面的Case是可以自动生成的,很方便
    2.用字符和汉字代替数字方便识别
    3.其实呢我自己使用枚举,并没有特别的意思就是感觉写起来有结构化,后期使用方法,不需要去记一个0代表什么1代表什么2代表什么的数字状态了。
    而是直接看名称就知道是什么意思。
    大家说说自己的看法吧。

  • TA的每日心情
    慵懒
    2016-9-27 10:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2013-5-27 09:58:59 | 显示全部楼层
    支持飞哥,精品越出越多,在论坛学到了很多东西。
  • TA的每日心情
    开心
    昨天 09:05
  • 签到天数: 643 天

    [LV.9]以坛为家II

     楼主| 发表于 2013-5-27 10:08:39 | 显示全部楼层
    SillyPGM 发表于 2013-5-27 09:58
    支持飞哥,精品越出越多,在论坛学到了很多东西。

    大家相互交流我也是为了提高自己
  • TA的每日心情
    开心
    昨天 09:05
  • 签到天数: 643 天

    [LV.9]以坛为家II

     楼主| 发表于 2013-7-4 12:28:29 | 显示全部楼层

    谢谢

    该用户从未签到

    发表于 2013-7-5 17:36:59 | 显示全部楼层
    好久没来了,{:soso_e113:}···顶一个,学习了

    该用户从未签到

    发表于 2013-7-9 10:25:22 | 显示全部楼层
    前面定义了 int SkinValue,为什么后面还要转换啊   SkinValue =Convert.ToInt32

    该用户从未签到

    发表于 2013-7-26 11:56:25 | 显示全部楼层
    建议飞哥在最后结束的时候附上运行结果~让新人看得更清晰!

    该用户从未签到

    发表于 2013-7-26 12:01:22 | 显示全部楼层
    站长苏飞 发表于 2013-5-27 10:08
    大家相互交流我也是为了提高自己

    希望飞哥能在最后附上运行效果图...
  • TA的每日心情
    开心
    昨天 09:05
  • 签到天数: 643 天

    [LV.9]以坛为家II

     楼主| 发表于 2013-7-26 12:14:35 | 显示全部楼层
    赖同志 发表于 2013-7-26 12:01
    希望飞哥能在最后附上运行效果图...

    截图的方法不利的Seo优化,而且不方便用户复制
    但是阅读确实好
    只是这里个文章大部分是不需要运行的。
    以后再写的时候我尽量把文字和截图都发上来。
    感谢你的建议

    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

    QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备17001017号-1 )

    GMT+8, 2018-12-13 08:07

    © 2017-2018

    快速回复 返回顶部 返回列表