http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 36110|回复: 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代表什么的数字状态了。
而是直接看名称就知道是什么意思。
大家说说自己的看法吧。



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
42
发表于 2018-8-11 14:51:05 | 只看该作者
楼主加油,我们都看好你哦。
41
发表于 2016-6-10 11:53:01 | 只看该作者
NO.3 C# 枚举类型深入浅出 ~学习完毕
38
发表于 2014-6-18 17:30:04 | 只看该作者
飞哥你好,我也是刚刚自学C#,看到很多人问到前面定义了 int SkinValue,为什么后面还要转换,我的理解是,转换时把 red 字符串转换成int,不知道我的理解是否正确,虚心请教。
37
发表于 2014-6-18 17:26:00 | 只看该作者
受教了,学习中……
36
发表于 2014-6-18 17:20:30 | 只看该作者
飞哥你好,我也是刚刚自学C#,我看到很多人都问,前面定义了 int SkinValue,为什么后面还要转换,我理解是red是字符串,不是int 类型,所以其实转换的是red字符串到int类型,不知道我理解的有没有问题。虚心请教!
35
发表于 2014-5-16 14:37:08 | 只看该作者
[ 本帖最后由 hzq1984 于 2014-5-16 14:38 编辑 ]\n\n如何去的枚举类型的所有值和所有名称呢?
[C#] 纯文本查看 复制代码
  static void Main(string[] args)
        {
            //取得所有名称
            foreach (var c in Enum.GetNames(typeof(Color))) 
            {
                Console.WriteLine(c);
            }
            //取得所有值
            foreach (int c in Enum.GetValues(typeof(Color)))
            {
                Console.WriteLine(c);
            }
           Console.Read();
        }
        public enum Color : int
        {
            red=2,
            green=4,
            yellow=8
           //...
          }
34
发表于 2014-5-16 14:30:42 | 只看该作者
本帖最后由 hzq1984 于 2014-5-16 14:48 编辑

c#我以前不常用,最近做项目要用到,所以开始自学!
看完楼主的文章,想到应该还能更多一点点的,所以我就写出来,当再一次复习一下,
,希望论坛越办越好!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-11-25 03:07

© 2014-2021

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