C#基础-变量与常量(二)

已有 1527 次阅读2015-8-19 14:54 |个人分类:C#

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4

一、枚举类型:
      
枚举类型是一种独特的值类型,它用于声明一组具有相同性质的常量。编写与日期相关的应用程序时,经常需要使用年、月、日、星期等日期数据,可以将这些数据组织成多个不同名称的枚举类型。使用枚举类型可以增加程序的可读性和可维护性。同时,枚举可以避免类型错误。
       1、在C#中使用关键字enum类声明枚举;
enum   枚举名
{
       List 1= value 1;
       List 2=value 2;
       List 3=value 3;
}
  2、创建一个控制台应用程序通过枚举来判断当前日期是星期几:

class Program

    {

        enum MyDate                   //使用enum创建枚举

        {

            Sun = 0,                  //设置枚举值名称Sun,枚举值为0

            Mon = 1,                 //设置枚举值名称Mon,枚举值为1

            Tue = 2,                  //设置枚举值名称Tue,枚举值为2

            Wed = 3,                 //设置枚举值名称Wed,枚举值为3

            Thi = 4,                  //设置枚举值名称Thi,枚举值为4

            Fri = 5,                  //设置枚举值名称Fri,枚举值为5

            Sat = 6                  //设置枚举值名称Sat,枚举值为6

        }

        static void Main(string[] args)

        {

            int k = (int)DateTime.Now.DayOfWeek;           //获取代表星期几的返回值

            switch (k)

            {

                //如果k等于枚举变量MyDate中的Sun的枚举值,则输出今天是星期日

                case (int)MyDate.Sun: Console.WriteLine("今天是星期日"); break;

                //如果k等于枚举变量MyDate中的Mon的枚举值,则输出今天是星期一

                case (int)MyDate.Mon: Console.WriteLine("今天是星期一"); break;

                //如果k等于枚举变量MyDate中的Tue的枚举值,则输出今天是星期二

                case (int)MyDate.Tue: Console.WriteLine("今天是星期二"); break;

                //如果k等于枚举变量MyDate中的Wed的枚举值,则输出今天是星期三

                case (int)MyDate.Wed: Console.WriteLine("今天是星期三"); break;

                //如果k等于枚举变量MyDate中的Thi的枚举值,则输出今天是星期四

                case (int)MyDate.Thi: Console.WriteLine("今天是星期四"); break;

                //如果k等于枚举变量MyDate中的Fri的枚举值,则输出今天是星期五

                case (int)MyDate.Fri: Console.WriteLine("今天是星期五"); break;

                //如果k等于枚举变量MyDate中的Sat的枚举值,则输出今天是星期六

                case (int)MyDate.Sat: Console.WriteLine("今天是星期六"); break;

            }

            Console.ReadLine();

        }

}

二、类型转换

  类型转换时将一种类型转换为另一种类型。转换可以是隐式转换或者是显示转换
1
、隐式转换:所谓隐式转换就是不需要声明就能进行的转换。进行隐式转换时,编译器不需要进行检查就能安全的进行转换。

源类型

                                         

sbyte

shortint longfolatdoubledecimal

byte

shortushortintuintlongfloatdoubledecimal

short

intlongulongfloatdoubledecimal

ushort

intuintlongulongfloatdoubledecimal

int

longfloatdoubledecimal

uint

intuintlongfloatdoubledecimal

char

ushortintuintlongulongfloatdoubledecimal

float

double

ulong

floatdoubledecimal

long

floatdoubledecimal

intuintlongulongfloat,以及从longulongdouble的转换可能导致精度的损失,但不会影响其数量级。其他的隐式转换不会丢失任何信息。  

int类型的值隐式转换成long类型

int i=927;     //声明一个整形变量i并初始化为927 long j=i;     //隐式转换成long           

 2、显示转换:
显示转换也可以称为强制转换,需要在代码中明确地声明要转换的类型。如果要在不存在的隐式转换的类型之间转换,就需要使用显示转换。

源类型

                                                     

sbyte

byteushortuintulong  char

byte

Sbyte  char

short

sbytebyteushortuintulong  char

ushort

sbytebyteshort  char

int

sbytebyteshortushortuintulong  char

uint

sbytebyteshortushortint  char

long

sbytebyteshortushortintuintulong  char

ulong

sbytebyteshortushortintuintlong  char

char

sbytebyte  short

float

sbytebyteshortushortintuintlongulongchar  decimal

double

sbytebyteshortushortintuintlongulongcharfloat  decimal

decimal

sbytebyteshortushortintuintlongulongcharfloat  double

 

显式转换包含所有隐式转换和显式转换,因此总是可以使用强制转换表达式从任何数值类型转换为任何其他的数值类型。
      
创建控制台应用程序,将double类型的x进行显示类型转换
static void Mainstring [] age
{
        
double x=19810927.0112;       //建立double类型变量x
         int y=intx;                 //显式转换成变量类型Y
       
Console.WriteLine(y);         //输出整形变量y
        Coneole.ReadLine();
}
  也可以通过Convert关键字来进行显式类型转换;
  创建控制台应用程序,通过Convert关键字进行显式类型转换。
double x=19810927.0112;                  //建立double类型变量x
int y=Convert.ToInt32(x);                 //通过Convert关键字转换
Console.WriteLine(y);                      //输出整形变量y
Console.ReadLine();

三、装箱和拆箱
  将值类型转换为引用类型的过程叫做装箱,相反,将引用类型转换为值类型的过程叫做拆箱。
1
、装箱:装箱允许将值类型隐式转换成引用类型。
声明整形变量i并赋值2008。然后将其复制到装箱对象obj中,最后再改变变量i的值
static void Main(string[] args)
  {
     
int i = 2008;           //
声明一个int类型变量i,并初始化为2008
     
object obj = i;         //声明一个object类型obj,初始化值为i       Console.WriteLine("1.i的值为{0},装箱之后的对象为{1}", i, obj);       i = 927;                //重新将i赋值为927      Console.WriteLine("2.i的值为{0},装箱之后的对象为{1}", i, obj);       Console.ReadLine();}

将值类型变量的值复制到装箱得到的对象中,装箱后改变值类型变量的值,并不会影响装箱对象的值
    2
、拆箱:拆箱允许将引用类型显示转换为值类型。
   
声明变量i并赋值为112.然后将其复制到装箱对象obj中。最后进行拆箱操作,将装箱对象obj赋值给整形变量j
static void Main(string[] args)
        {
           
int i = 112;            //声明一个int类型的变量i,并初始化为112
   
       object obj = i;         //执行装箱操作
            Console.WriteLine("装箱操作:值为{0},装箱之后对象为{1}",i,obj);
           
int  j=(int )obj;           //执行拆箱操作
            Console.WriteLine("拆箱操作:装箱对象为{0},值为{1}", obj, j);
            
Console.ReadLine();
     }
   
拆箱后得到的值类型数据的值与装箱对象相等。在拆箱操作中,要符合类型一制的原则,否则会出现异常

/* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:宋体; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt;}

路过

雷人

握手

鲜花

鸡蛋

全部作者的其他最新日志

发表评论 评论 (1 个评论)

回复 18453388778 2015-8-19 14:55
   一楼自己玩

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册