C#学习日记11---数据类型 之 枚举(enum)类型

黄舟
黄舟 原创
2017-01-20 13:46:46 740浏览

前面我所介绍的全都是值类型 ,写这么多了,我总结以下什么叫值类型 。简单的说,该类型的变量直接存储所包含的值。这里我们与C语言中的字符串相对比一下,char ch[6] = "HC666"; 老师说过这里其实是用ch来引用“HC666”的地址,通过访问地址来访问数据。string也是一样,因此C#中的字符串 String 就是引用类型,而不是值类型。。而struct 类型却不是这样,通过直接赋值来改变变量存储内容,因此它是值类型。

值类型 之 枚举(enum)类型:

枚举(enum): 实际上是为一组在逻辑上密不可分的整数值提供便于记忆的符号。 举个例子来说吧,比如到了星期天了,我买了张电影票取看电影,座位号一看挺好---66号,按照号码我找到了位置,很好的一个位置---第2排第5列,于是愉快的看完了电影。其实这个66号在我所在的放映室里对映的就是 第2排第5列,这就叫一个枚举。

声明枚举(enum)类型变量:

enum   变量名
                   {
                   标识符列表     
            } ;


注意:

标识符列表中,元素与元素之间用 , 逗号分隔;

枚举列表中的每个符号代表一个整数值,一个比他前面符号大的整数值,默认情况下,第一个枚举符号代表0,当然也可以修改:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
  
namespace Test  
{  
    class Program  
    {  
        //定义 enum 类型 以0开始递增  
        enum weekday  
            {  
                Sun, Mon, tue, Wed, thu, Fri, Sat    //若要改变默认值只需  (Sun = 2, Mon, tue, Wed, thu, Fri, Sat)以2开始递增+1  
            };  
  
        static void Main(string[] args)  
        {  
            weekday wek;  
            Console.WriteLine("输入0~6一个数字: ");  
            int i = int.Parse(Console.ReadLine());  
  
            wek = (weekday)i;     //强制类型转换,将int类型转化为 weekday 类型  
  
            Console.WriteLine("{0} 是 {1}", i, wek);  
  
        }  
    }  
}

我输入一个0:

497.png

对于代码中出现的 强制类型转换 我会在后面的 隐式转换与显示转换 中具体写出,现在就不做介绍了。

结构(struct)类型 与 枚举(enum )类型的比较:

我有个同学他总是 Struct类型 与 enum类型 傻傻分不清,有时候写出这样的错误代码来了:

enum  wek
{
     int   a,b,c;
   string  d,e,f;
}

为了避免以上的错误,这里我就说说它们之间的区别吧:在说 struct类型 的时候我已经提到了它里面的数据类型可以是多个不同类型的,换句话说,Struct类型是由不同类型的数据组成的一组新类型,结构类型变量的值是由各个成员的值组合而成。比如:

  Struct   wek
{
      public  int   a  = 1;
     public  int   b = 2;
}

定一个变量 wek w; 此时的 w 既可以用来表示 a 的值是1 (w.a),也可以表示 b 的值是 2(w.b)

而枚举(enum)类型 则不同,枚举类型的变量在某一时刻只能取枚举列表中某一个元素的值,比如:前面我编写的enum weekday 的程序中wek 在某一时刻只能表示一个值 ,它不能在同一时刻既表示 Sun 也表示 Mon ,

wek = (weekday)2; 此时wek 只能表示Tue,不能表示其它的了。

以上就是C#学习日记11---数据类型 之 枚举(enum)类型的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!


声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。