首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

学习一门语言,不能过于急躁,越是基础的知识越应该好好把握。本章将从C#语言的数据类型和流程控制语句入手,详细介绍C#作为一门开发语言所具备的所有基础知识。

本章主要介绍C#语言的数据类型、运算符和流程控制语句,最后还介绍了开发程序的基本结构。通过本章的学习,读者可以了解C#语言的构成,认识C#语言的编写规范。

2.1  数据类型

数据类型是开发语言的基础,不同的开发语言,数据类型的分类基本上是相同的,所以,有开发语言基础的学习者,通过本节的知识,能对C#的类型有更深入的了解。

本节主要介绍值类型、引用类型、类型转换和拆、装箱操作的原理。

 2.1.1  值类型

值类型是将数据保存在堆栈上的简单存储方式。当把一个数据赋给值类型时,其被保存在堆栈上的变量中。堆栈是一个很小的内存区域,通常存储大小固定的数据块。无论存储什么类型的数据,其分配的字节数都是相同的。

值类型可以是任意形式的数据,如字符、数值、结构和枚举等。下一节将会提供一个简单的例子,学习如何辨别值类型。

 2.1.2  引用类型

引用类型是将数据保存在堆上的存储方式。当将一个数据给引用类型时,它被保存在堆上的变量中。引用类型的大小不固定,为了可以快速地搜索引用类型数据的值,通过将其地址保存在堆栈上,可以通过地址找到真正数据的所在。引用类型很抽象,就像一个门牌号,可以根据门牌号找到所在的房子。

引用类型一般包括类型、接口、委托和数组等。

下面是一个简单的实例,学习如何辨别值类型和引用类型。

class Program

{

    static void Main(string[] args)

    {

        //引用类型的演示

        Study A1 = new Study();

        Study A2 = A1;

        A2.x = 15;

        //值类型的演示

        int B1 = 30;

        int B2 = B1;

        B2 = 25;

        Console.WriteLine("A1.x=" + A1.x + ",A2.x=" + A2.x); //引用类型结果

        Console.WriteLine("B1= " + B1 + ",B2= " + B2);       //值类型结果

    }

}

class Study

{

    public int x=10;                                         //类的变量,默认为10

}

其中,“A2”是类的对象,是引用类型。当改变其数据时,实际数据也发生了变化,即“A1”中的数据也变了。“B2”是值类型,当其数据发生变化时,并不影响“B1”的数据。上面例子的输出结果如图2.1所示。

图2.1  值类型和引用类型的输出对比

 2.1.3  类型转换

在C#中,为了输出和保存的需要,不同的类型之间可以实现转换。本节从基本数据入手,介绍如何在C#中实现基础类型之间的转换。

基础类型一般包括字符型、数值型、日期型。根据类型转换方式的不同,可分为隐式转换和显式转换两种。

—     隐式转换:在进行类型转换时,需要在代码中明确指出转换后的数据类型。下面的代码演示一个隐式转换的过程。

class Program

{

    static void Main(string[] args)

    {

        double y = 25.505;               //定义双精度型

        int z = (int)y;                  //定义整型——实现显式转换

       Console.WriteLine("z=" + z );     //显示转换后的值

    }

}

—     显式转换:在进行类型转换时,不需要在代码中明确指出转换后的数据类型,系统会自动进行类型判断,并正确实现类型转换。下面的代码演示一个显式转换的过程。

class Program

{

    static void Main(string[] args)

    {

        int  x = 2;                       //定义整型

        double  z = x;                   //定义双精度型——实现隐式转换

        Console.WriteLine("z=" + z );    //显示转换后的值

    }

}

 2.1.4  装箱和拆箱

装箱和拆箱是值类型和引用类型互相转换的过程,是数据类型转换的一种特殊应用。装箱将值类型转换为引用类型,而拆箱正好相反,将引用类型转换为值类型。

下面一个例子演示装箱的过程,其中“object”为引用类型。

class Program

{

    static void Main(string[] args)

    {

        double A1 = 66.6;                                        //定义值

        object B1 = A1;                                          //装箱操作

        Console.WriteLine("初始值为: {0}, 装箱后的值为{1}", A1, B1.ToString());                                                                 //输出结果

    }

}

拆箱虽然只是装箱的一个逆向操作,但需要注意类型的显式转换。下面一个例子演示拆箱的过程。

class Program

{

    static void Main(string[] args)

    {

        double A1 = 65.22;                           //初始值

        object B1 = A1;                              //转化为引用对象后的值

        double C1 = (double)B1;                      // 将引用型对象拆箱,并返回值

        Console.WriteLine("引用类型的值为: {0}, 拆箱后的值为{1}", B1, C1);                                                               //输出结果

    }

}

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论