zoukankan      html  css  js  c++  java
  • 一周学C#第六天——枚举

     

    一周学C#_6

    枚举

    1          类型

    值类型

    变量直接包含它们自己的数据

    局部变量总是放在栈stack

    引用类型

    变量间接指向它们的数据

    局部变量指向堆heap中的对象

    枚举enum

    值类型

    结构struct

    值类型

    class

    引用类型

    接口interface

    引用类型

    数组[]array

    引用类型

    委托delegate

    引用类型

    C#规定,类如intdouble等内在类,属于结构,C#称之为“简单类型”。

    简单类型与自定义类型的最大区别在于:简单类型有字面表达式;而自定义类型没有。

    还有,第三种类型:指针。指针只能用在unsafe块(非安全代码)中。

    2          枚举类型

    枚举类型是一个用户声明的值类型

    enum Suit

    {

           Clubs, Diamonds, Hearts, Spades

    }//Suit表示一副牌,有4中花色:梅花,方块,红心,黑桃

    sealed class Example

    {

           static void Main()

           {

                  ...

                  Suit lead=Spades;//这里错误

                  ...

                  Suit trumps=Suit.Clubs;//这样才正确

                  ...

           }

    }

    枚举声明:

    可以出现中类声明的相同地方

    包括:名字、访问权限、内在的类型和枚举的成员。

    其中的变量的作用范围是定义它的枚举

    Suit trumps=Clubs;//这是错误的,必须将Clubs限定为Suit的一个成员,如下

    Suit trumps=Suit.Clubs;

    3          枚举的注意事项

    枚举值缺省类型为int

    可以选择任一一个内在的整数类型

    但是不能是字符型

    enum Suit:int//内在类型为int,可以省略

    {

           Clubs,

           Diamonds,

           Heart=42,//成员默认取值为前一个成员值+1,但是也可以自己赋初始值

           Spades,//最后一个成员的分号是可选的

    };//结尾分号也是可选的

    枚举类型中的内在变量可以显式声明的类型包括:sbyte, byte, short, ushort, int, uint, long,ulong.

    如果没有显式声明,默认的类型为int

    成员的取值必须和枚举声明的内在类型相同。并且,必须在内在类型的范围之内。

    如果没有给成员赋值,其取值为前一成员值+1,第一成员默认值为1

    枚举成员的取值可以是相同值。

    最后一个枚举成员可以用逗号结尾

    枚举成员默认访问权限是public

    4          使用枚举

    枚举类型隐式的派生自System.Enum

    namespace System

    {

           public abstract class Enum

           {

                  //静态函数

                  public static string[] GetNames(Type);

                  ...

                  //实例函数

                  public override string ToString();

                  //构造函数

                  protected Enum();

           }

    }

     

    Suit trumps=Suit.Clubs;

    string[] names=System.Enum.GetNames(trumps.GetType());

    ...

    Console.Write(names[0]);//Clubs

    Console.Write(trumps);//Clubs

    Console.Write(“{0}”,trumps);//Clubs

    Console.Write(trumps.ToString());//Clubs

    Console.Write((Suit)24);//24

     

    System.EnumSystem命名空间的一个抽象类。它实现类一系列的接口:

                  public abstract class Enum:IComparable,IFormattable,IConvertible

                  {...}

    枚举隐式派生于System.Enum

    System.Enum只能被用来作为一个枚举类型的隐含基类。

    不能显式的从System.Enum派生自己的类。

    不能创建System.Enum类的实例。

    5          枚举的操作符

    枚举变量被当做整数变量来看待。

    但在大部分情况下不能使用移位操作符。

    6          枚举的转换

    隐式转换

    0可以转为任一enum类型

    从不抛出错误

    显式转换

    enumenum通过内在类型转换

    enum转为数值类型(包含char

    从数值类型(包括char)转为enum

    从不抛出错误

    0可以被转为任一enum类型,不管此enum类型是否包括0

     

     

     

     

  • 相关阅读:
    Android中ScrollView嵌套GridView,解决GridView显示不全的问题
    Android图片缓存的框架ImageLoader的使用
    iOS调用系统的电话功能
    SVN提交.a文件的方法
    使用NSURLSession请求需要AD认证的HTTPS服务器
    Android基本控件属性设置
    iOS获取运营商的相关信息
    Android中颜色的设置
    UICollectionView未充满时也可以滚动
    cocos2dx for lua 截屏功能
  • 原文地址:https://www.cnblogs.com/lizunicon/p/1382508.html
Copyright © 2011-2022 走看看