苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

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

查看: 14731|回复: 42

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

[复制链接]
发表于 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代表什么的数字状态了。
而是直接看名称就知道是什么意思。
大家说说自己的看法吧。

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

大家相互交流我也是为了提高自己
 楼主| 发表于 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
大家相互交流我也是为了提高自己

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

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

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

本版积分规则

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

GMT+8, 2019-2-24 13:45

© 2017-2018

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