zoukankan      html  css  js  c++  java
  • 第九章、使用枚举和结构创建值类型

      使用枚举

      可以使用enum关键字来创建枚举类型,限制其值只能是一组符号名称。

      声明枚举

      enum Season{ Spring,Summer,Fall,Winter}

      使用枚举

      声明好枚举之后,可以像使用其他类型的那样使用它们。假定枚举名称为Season,那么可以创建Season类型的变量,Season类型的字段以及Season类型的方法参数,如下

      enum Season{ Spring,Summer,Fall,Winter}

      class Example{

      public void Method(Season parameter)//方法参数

      {

      Saeson localVariable;//局部变量

      。。。。

      }

      private Season currentSeason;//字段

      }

      枚举类型的变量只有在赋值之后才能使用。只能将枚举类型定义好的赋值给该类型的变量。例如:

      Season colorful = Season.Fall;

      Console.WriteLine(colorful);//输出Fall

      和所有值类型一样,可以使用?修饰符来创建可空枚举变量。

      适用于整数变量的许多标准操作符也适用于枚举变量。唯一例外的是按位和移位。

      枚举内部的每个元素都关联(对应)着一个整数值。默认第一个元素对应整数0,以后每个元素对应的整数都递增1.

      enum Season{ Spring,Summer,Fall,Winter}

      。。。

      Season colorful = Season.Fall;

      Console.WriteLine((int)colorful);//输出“2”

      如果愿意,可以将特定整数常量(例如1)和枚举类型的文字常量手动关联起来

      enum Season{ Spring = 1,Summer,Fall,Winter}

      Spring,Summer,Fall,Winter的基础值将变成1,2,3,4

      选择枚举的基本类型

      enum Season:short{ Spring,Summer,Fall,Winter}

      使用结构

      结构是值类型,在栈上存储。结构可以包含自己的字段、方法和构造器。

      声明结构

      struct Date

      {

      private int year;//字段

      private Month month;

      private int day;

      public Date(int ccyy, Month mm, int dd)//构造器

      {

      this.year = ccyy - 1900;

      this.month = mm;

      this.day = dd -1;

      }

      public override string ToString()//方法

      {

      string date = String.Format("{0},{1},{2}",this.month,this.day -1,this.year + 1900);

      return date;

      }

      public void AdvanceMonth()//方法

      {

      this.month++;

      if (this.month == Month.December + 1)

      {

      this.month = Month.January;

      this.year++;

      }

      }

      }

      理解结构和类的区别

      ①不能为结构声明默认构造器(无参构造器)。之所以不能为结构声明自己的默认构造器,是由于编译器始终都会自动生成一个。

      自己写的构造器必须显示初始化所有字段,否则会发生编译错误。

      struct Time{

      private int hours,minutes,seconds;

      ......

      public Time(int hh,int mm)

      {

      this.hours = hh;

      this.minutes = mm;

      }//编译时错误,seconds未初始化

      }

      ②类的实例字段可以在声明时初始化,但结构不允许

      struct Time{

      private int hours = 0;//编译时错误

      private int minutes;

      private int seconds;

      }

      复制结构变量

      可将结构变量初始化或赋值为另外一个结构变量,前提是操作符=右侧的结构变量已完全初始化。

      Time now = new Time(12,30);

      Time copy = now;

  • 相关阅读:
    64位操作系统安装32位客户端和PL/SQL
    Oracle clob 操作
    Oracle中DBMS_LOB包使用小结
    PLSQL自动断开服务器连接 (转)
    oracle odbc 驱动安装(不安装oracle客户端)
    Broadcom GNSS xxx Geolocaltion Sensor与Windows导航程序的兼容性(转)
    GPS经纬度的表示方法及换算
    odp.net 读写oracle blob字段
    oracle 的数组(转)
    javascript的window.ActiveXObject对象,区别浏览器的方法
  • 原文地址:https://www.cnblogs.com/linhuide/p/5819856.html
Copyright © 2011-2022 走看看