zoukankan      html  css  js  c++  java
  • 枚举

    1)      声明位置:将枚举声明到命名空间的下面,类的外面,表示这个命名空间下,所有的类都可以使用这个枚举。

    2)      枚举就是一个变量类型,int,double,string,decimal

    3)      只是枚举声明,赋值,使用的方法跟那些普通的变量类型不一样

    4)      默认情况下,每个值都会根据定义的顺序从0开始,自动赋值每个值一个整形。

    5)      当然也可以为指定一个枚举的基础值。

    声明方式,语法:

    [public]  enum 枚举类
    
    {
    
          值1,
    
          值2,
    
         值3
    
          .。。。
    
    }

    代码示例:

    {
    //在此处声明枚举,他与结构的作用类类似,所有位置一样,但是同时,枚举也可以在结构中被调用

    public enum Gender
    {
        男,
        女
    }
    public enum Week
    {
        星期一,
        星期二,
        星期三,
        星期四,
        星期五
    }
    class Program
    {
        static void Main(string[] args)
    {
            Gender zhangsan = Gender.男;
            Console.Write(zhangsan);
            Week we = Week.星期一;
            Console.ReadKey();
            }
        }
    }        

    常用用法:

    namespace EnumConvertDemo
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            #region 变量
    
            /// <summary>
            /// 操作类型管理对象
            /// </summary>
            enumOperation operationMgr = enumOperation.EnumConvertToString;
    
            /// <summary>
            /// 颜色类型管理对象
            /// </summary>
            enumColor colorMgr = enumColor.Red;
    
            #endregion
    
            #region 私有方法
    
            private void DoAction()
            {
                switch (operationMgr)
                {
                    case enumOperation.EnumConvertToString:
                        this.txtResultString.Text = this.EnumConvertToString(colorMgr);
                        break;
                    case enumOperation.EnumConvertToInt:
                        this.txtResultInt.Text = this.EnumConvertToInt(colorMgr).ToString();
                        break;
                    case enumOperation.StringConvertToEnum:
                        this.StringConvertToEnumProcess();
                        break;
                    case enumOperation.IntConvertToEnum:
                        this.IntConvertToEnumProcess();
                        break;
                }
            }
    
            /// <summary>
            /// 将枚举类型修改为字符串
            /// </summary>
            /// <param name="color"></param>
            /// <returns></returns>
            private string EnumConvertToString(enumColor color)
            {
                //方法一
                //return color.ToString();
    
                //方法二
                return Enum.GetName(color.GetType(), color);
            }
    
            /// <summary>
            /// 将枚举类型修改为数字
            /// </summary>
            /// <param name="color"></param>
            /// <returns></returns>
            private int EnumConvertToInt(enumColor color)
            {
                return (int)color;
            }
    
            /// <summary>
            /// 将字符串类型转换为枚举类型
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            private enumColor StringConvertToEnum(string str)
            {
                enumColor color = enumColor.Red;
                try
                {
                    color = (enumColor)Enum.Parse(typeof(enumColor), str);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return color;
                }
    
                return color;
            }
            /// <summary>
            /// 将数字类型转换为枚举类型
            /// </summary>
            /// <param name="i"></param>
            /// <returns></returns>
            private enumColor IntConvertToEnum(int i)
            {
                if (Enum.IsDefined(typeof(enumColor), i))
                {
                    return (enumColor)Enum.ToObject(typeof(enumColor), i);
                }
                return enumColor.Red;
            }
    
            private void StringConvertToEnumProcess()
            {
                string str = this.txtResultString.Text.Trim();
                if (string.IsNullOrEmpty(str))
                {
                    this.txtResultString.Focus();
                    MessageBox.Show("String处不能为空");
                    return;
                }
                enumColor color = this.StringConvertToEnum(str);
                this.ChoseEnumValue(color);
            }
    
           
    
            private enumColor IntConvertToEnumOther(int i)
            {
                return (enumColor)i;
            }
    
            private void ChoseEnumValue(enumColor color)
            {
                switch (color)
                {
                    case enumColor.Red:
                        this.rdbRed.Select();
                        break;
                    case enumColor.Yellow:
                        this.rdbYellow.Select();
                        break;
                    case enumColor.Green:
                        this.rdbGreen.Select();
                        break;
                    case enumColor.Blue:
                        this.rdbBlue.Select();
                        break;
                    case enumColor.White:
                        this.rdbWhite.Select();
                        break;
                    case enumColor.Black:
                        this.rdbBlack.Select();
                        break;
                }
            }
    
            private void IntConvertToEnumProcess()
            {
                if (string.IsNullOrEmpty(this.txtResultInt.Text.Trim()))
                {
                    this.txtResultInt.Focus();
                    MessageBox.Show("Int处不能为空");
                    return;
                }
                int number = Convert.ToInt32(this.txtResultInt.Text.Trim());
                enumColor color = this.IntConvertToEnum(number);
                this.ChoseEnumValue(color);
            }
    
    
            #endregion
    
            #region 事件
    
            private void Form1_Load(object sender, EventArgs e)
            {
                this.txtEnum.Text = "enumColor { Red,Yellow,Green,Blue,White,Black }";
            }
    
            private void Convert_CheckedChanged(object sender, System.EventArgs e)
            {
                if (this.rdbConvertToString.Checked)
                    this.operationMgr = enumOperation.EnumConvertToString;
                else if (this.rdbConvertToInt.Checked)
                    this.operationMgr = enumOperation.EnumConvertToInt;
                else if (this.rdbStringConvertToEnum.Checked)
                    this.operationMgr = enumOperation.StringConvertToEnum;
                else if (this.rdbIntConvertToEnum.Checked)
                    this.operationMgr = enumOperation.IntConvertToEnum;
    
                this.DoAction();
            }
    
            private void rdbColor_CheckedChanged(object sender, System.EventArgs e)
            {
                if (this.rdbRed.Checked)
                    this.colorMgr = enumColor.Red;
                else if (this.rdbYellow.Checked)
                    this.colorMgr = enumColor.Yellow;
                else if (this.rdbGreen.Checked)
                    this.colorMgr = enumColor.Green;
                else if (this.rdbBlue.Checked)
                    this.colorMgr = enumColor.Blue;
                else if (this.rdbWhite.Checked)
                    this.colorMgr = enumColor.White;
                else if (this.rdbBlack.Checked)
                    this.colorMgr = enumColor.Black;
    
                this.DoAction();
            }
    
            private void txtResultInt_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar != '')
                    if (e.KeyChar < '0' || e.KeyChar > '9')
                        e.Handled = true;
            }
    
            private void txtResultString_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar != '')
                    if (!((e.KeyChar >= 65 && e.KeyChar <= 90) || (97 <= e.KeyChar && e.KeyChar <= 122)))
                        e.Handled = true;
            }
    
            private void btnConvert_Click(object sender, EventArgs e)
            {
                if (this.operationMgr == enumOperation.IntConvertToEnum)
                    this.IntConvertToEnumProcess();
                else if (this.operationMgr == enumOperation.StringConvertToEnum)
                    this.StringConvertToEnumProcess();
            }
    
            #endregion
    
    
        }
    
        public enum enumColor
        {
            Red = 1,
            Yellow,
            Green,
            Blue,
            White,
            Black
        }
    
        public enum enumOperation
        {
            EnumConvertToString,
            EnumConvertToInt,
            StringConvertToEnum,
            IntConvertToEnum
        }
    }
  • 相关阅读:
    C++中使用多线程
    hdu 4223 dp 求连续子序列的和的绝对值最小值
    hdu 1372 bfs 计算起点到终点的距离
    hdu 4217 线段树 依次取第几个最小值,求其sum
    心得
    hdu 1175 bfs 按要求进行搜索,是否能到达,抵消两个(相同)棋子
    hdu 4221 greed 注意范围 工作延期,使整个工作时间罚时最少的单个罚时最长的值
    hdu 2844 多重背包 多种硬币,每一种硬币有一点数量,看他能组成多少种钱
    uva LCDDisplay
    hdu 4218 模拟 根据一个圆点和半径画一个圆 注意半径要求
  • 原文地址:https://www.cnblogs.com/wangjinya/p/9671678.html
Copyright © 2011-2022 走看看