




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C#从入门到实践从入门到实践第第1 1章章 C#C#入门基础入门基础Microsoft公司是这样描述公司是这样描述C#的:的:“C#是从是从C和和C+派生来的派生来的一种简单、现代、面向对象和类型安全的编程语言。一种简单、现代、面向对象和类型安全的编程语言。C#(读做(读做Csharp)主要是从)主要是从C/C+编程语言家族移植过来编程语言家族移植过来的,的,C和和C+的程序员会马上熟悉它。的程序员会马上熟悉它。C#试图结合试图结合Visual Basic的快速开发能力和的快速开发能力和C+的强大灵活的能力。的强大灵活的能力。”。本。本章将讲解使用章将讲解使用C#语言开发的入门知识,主要介绍以
2、下知语言开发的入门知识,主要介绍以下知识点。识点。l .NET Framewrok;l 搭建搭建Visual Studio 2008开发环境;开发环境;l 创建第一个控制台应用程序;创建第一个控制台应用程序;l 创建第一个创建第一个Windows窗体应用程序。窗体应用程序。C#从入门到实践从入门到实践1.1 C#1.1 C#概述概述C#是一种简单的、现代的、面向对象的、类型安全的编程是一种简单的、现代的、面向对象的、类型安全的编程语言。它不但提供了面向对象编程的技术,而且还提供语言。它不但提供了面向对象编程的技术,而且还提供了面向组件编程的支持技术。了面向组件编程的支持技术。Visual C#
3、 2008提供了许多提供了许多方便开发的工具,如高级代码编辑器、方便的用户界面方便开发的工具,如高级代码编辑器、方便的用户界面设计器、集成调试器等。开发人员使用这些工具,可以设计器、集成调试器等。开发人员使用这些工具,可以更容易在更容易在C#语言语言3.0版和版和.NET Framework 3.5版的基础上版的基础上开发应用程序。开发应用程序。C#从入门到实践从入门到实践1.1.1 C#1.1.1 C#语言语言C#是一种是一种Microsoft公司设计的、简洁的、类型安全的、面公司设计的、简洁的、类型安全的、面向对象的语言,它松散地基于向对象的语言,它松散地基于C/C+语言,并且有很多方语言
4、,并且有很多方面和面和Java语言类似。开发人员可以使用语言类似。开发人员可以使用C#语言来构建在语言来构建在.NET Framework上运行的各种安全、可靠的应用程序。上运行的各种安全、可靠的应用程序。C#语法表现力强、简单易学、容易上手。通常地,开发人语法表现力强、简单易学、容易上手。通常地,开发人员通过很短的时间的学习,就能够使用员通过很短的时间的学习,就能够使用C#语言开发高效语言开发高效的程序。的程序。C#语法提供了许多强大的功能,如可为空置(语法提供了许多强大的功能,如可为空置(null)的值类型、枚举、委托、)的值类型、枚举、委托、lambda表达式、直接内存表达式、直接内存访
5、问等。访问等。C#支持泛型类型和方法,进而提供了更为出色支持泛型类型和方法,进而提供了更为出色的类型安全和性能。特别地,的类型安全和性能。特别地,C#还提供了迭代器、语言还提供了迭代器、语言集成查询(集成查询(LINQ)表达式等高级功能,使得开发人员可)表达式等高级功能,使得开发人员可以在以在C#代码中创建具有查询功能的程序代码。代码中创建具有查询功能的程序代码。C#从入门到实践从入门到实践1.1.2 .NET1.1.2 .NET框架框架C#程序必须在程序必须在.NET Framework上运行。上运行。.NET Framework是是Windows的一个不可或缺的组件,是一个支持构建、部署和
6、运的一个不可或缺的组件,是一个支持构建、部署和运行下一代应用程序和行下一代应用程序和Web服务的完整服务的完整Windows组件。组件。.NET Framework能够提供效率极高的、基于标准的多语言(如能够提供效率极高的、基于标准的多语言(如C#、VB.NET、C+、J#等)环境,能够将现有的应用程序与下一等)环境,能够将现有的应用程序与下一代应用程序和服务集成,并能迅速部署和操作代应用程序和服务集成,并能迅速部署和操作Internet规模的规模的应用程序。应用程序。.NET Framework主要包括两个组件:公共语言运主要包括两个组件:公共语言运行库(行库(Common Language
7、 Runtime,简称为,简称为CLR)和)和.NET Framework类库(类库(Class Library)。)。1公共语言运行库公共语言运行库2.NET Framework类库类库3公共语言运行库、公共语言运行库、.NET Framework类库和应用程序的关系类库和应用程序的关系4语言互操作性语言互操作性5C#应用程序执行流程应用程序执行流程C#从入门到实践从入门到实践1.1.3 C#1.1.3 C#应用程序应用程序C#应用程序包括两种应用程序:控制台(应用程序包括两种应用程序:控制台(Console)应用程)应用程序(序(1.3小节创建的应用程序就是一个控制台应用程序)小节创建的应
8、用程序就是一个控制台应用程序)和和Windows窗体应用程序(窗体应用程序(1.4小节创建的应用程序就是小节创建的应用程序就是一个一个Windows窗体应用程序)。控制台应用程序的界面窗体应用程序)。控制台应用程序的界面往往比较简单,而往往比较简单,而Windows窗体应用程序能够提供丰富窗体应用程序能够提供丰富的图形界面。的图形界面。1控制台应用程序控制台应用程序2Windows窗体应用程序窗体应用程序C#从入门到实践从入门到实践1.2 1.2 搭建搭建Visual Studio 2008Visual Studio 2008开发环境开发环境本小节介绍搭建开发本小节介绍搭建开发C#应用程序(如
9、应用程序(如Windows窗体应用程窗体应用程序、序、ASP.NET网站等)的环境,包括安装网站等)的环境,包括安装Microsoft Visual Studio 2008、配置集成开发环境(、配置集成开发环境(IDE)、熟悉集)、熟悉集成开发环境(成开发环境(IDE)等内容。)等内容。注意:笔者机器的操作系统为注意:笔者机器的操作系统为Microsoft Windows Server 2003 Enterprise Edition Service Park 2。C#从入门到实践从入门到实践1.2.1 1.2.1 安装安装Microsoft Visual Studio 2008Microsof
10、t Visual Studio 2008下面介绍在笔者机器上安装下面介绍在笔者机器上安装Microsoft Visual Studio Team System 2008简体中文版的操作步骤,具体如下。简体中文版的操作步骤,具体如下。 C#从入门到实践从入门到实践1.2.2 1.2.2 配置集成开发环境(配置集成开发环境(IDEIDE)由于由于Microsoft Visual Studio 2008集成开发环境(集成开发环境(IDE)非常)非常复杂,为了以后能够更加方便地开发各种复杂,为了以后能够更加方便地开发各种C#应用程序,应用程序,在此,特意详细介绍配置在此,特意详细介绍配置Microso
11、ft Visual Studio 2008集集成开发环境的方法。成开发环境的方法。C#从入门到实践从入门到实践1.2.3 1.2.3 熟悉集成开发环境(熟悉集成开发环境(IDEIDE)Microsoft Visual Studio 2008集成开发环境包括多个可以停集成开发环境包括多个可以停靠或浮动的面板,如靠或浮动的面板,如“工具箱工具箱”、“服务器资源管理器服务器资源管理器”、“解决方案资源管理器解决方案资源管理器”、“属性属性”等面板。等面板。C#从入门到实践从入门到实践1.3 1.3 创建第一个控制台应用程序创建第一个控制台应用程序本节介绍使用本节介绍使用Microsoft Visua
12、l Studio 2008集成开发环境(集成开发环境(IDE)创建第一个控制台应用程序)创建第一个控制台应用程序Sample_01_CA的的方法,以及开发方法,以及开发Sample_01_CA应用程序所涉及的各种基应用程序所涉及的各种基本技术,如编写本技术,如编写C#代码、运行应用程序等。代码、运行应用程序等。C#从入门到实践从入门到实践1.3.1 1.3.1 创建创建Sample_01_CASample_01_CA控制台应用程序控制台应用程序依次选择依次选择“开始开始”|“所有程序所有程序”|“Microsoft Visual Studio 2008”|“Microsoft Visual S
13、tudio 2008”命令,打开命令,打开“起始起始页页 - Microsoft Visual Studio”对话框。单击对话框。单击“最近项目最近项目”面板中的面板中的“创建创建”下的下的“项目项目”链接,弹出链接,弹出“新建项目新建项目”对话框,如图对话框,如图1.24所示。所示。 C#从入门到实践从入门到实践1.3.2 1.3.2 解决方案资源管理器解决方案资源管理器创建创建Sample_01_CA控制台应用程序成功之后,控制台应用程序成功之后,Microsoft Visual Studio 2008集成开发环境(集成开发环境(IDE)将为该应用程序)将为该应用程序创建一个默认类文件,名
14、称为创建一个默认类文件,名称为“Program.cs”。打开。打开“解解决方案资源管理器决方案资源管理器”面板,可以查看面板,可以查看Sample_01_CA控制控制台应用程序包含的所有资源和数据,如图台应用程序包含的所有资源和数据,如图1.25所示。所示。C#从入门到实践从入门到实践1.3.3 Program.cs1.3.3 Program.cs文件文件双击双击“解决方案资源管理器解决方案资源管理器”面板中的面板中的“Program.cs”节点节点,打开,打开Program.cs文件。该文件为文件。该文件为Sample_01_CA控制台控制台应用程序提供主入口点。应用程序提供主入口点。C#从
15、入门到实践从入门到实践1.3.4 AssemblyInfo.cs1.3.4 AssemblyInfo.cs文件文件首先展开首先展开“解决方案资源管理器解决方案资源管理器”面板中的面板中的“Properties”节节点,然后双击点,然后双击“AssemblyInfo.cs”节点打开节点打开AssemblyInfo.cs文件。该文件用来配置文件。该文件用来配置Sample_01_CA控控制台应用程序的程序集信息。制台应用程序的程序集信息。C#从入门到实践从入门到实践1.3.5 1.3.5 运行应用程序运行应用程序按下按下“F5”按钮或者单击按钮或者单击Microsoft Visual Studio
16、 2008集成开集成开发环境中的按钮即可运行发环境中的按钮即可运行Sample_01_CA控制台应用程序控制台应用程序。该应用程序运行之后,显示一个黑色的控制台对话框。该应用程序运行之后,显示一个黑色的控制台对话框,如图,如图1.26所示。所示。C#从入门到实践从入门到实践1.4 1.4 创建第一个创建第一个WindowsWindows窗体应用程序窗体应用程序本节介绍使用本节介绍使用Microsoft Visual Studio 2008集成开发环境(集成开发环境(IDE)创建第一个)创建第一个Windows窗体应用程序窗体应用程序Sample_01_WFA的方法,以及开发的方法,以及开发Sa
17、mple_01_WFA应用应用程序所涉及的各种基本技术,如设计程序所涉及的各种基本技术,如设计Windows窗体、编窗体、编写写C#代码、配置应用程序、运行应用程序等。代码、配置应用程序、运行应用程序等。C#从入门到实践从入门到实践1.4.1 1.4.1 创建创建Sample_01_WFA WindowsSample_01_WFA Windows窗体应窗体应用程序用程序依次选择依次选择“开始开始”|“所有程序所有程序”|“Microsoft Visual Studio 2008”|“Microsoft Visual Studio 2008”命令,打开命令,打开“起始起始页页 - Microso
18、ft Visual Studio”对话框。单击对话框。单击“最近项目最近项目”面板中的面板中的“创建创建”下的下的“项目项目”链接,弹出链接,弹出“新建项目新建项目”对话框,如图对话框,如图1.27所示。所示。 C#从入门到实践从入门到实践1.4.2 1.4.2 解决方案资源管理器解决方案资源管理器创建创建Sample_01_WFA Windows窗体应用程序成功之后,窗体应用程序成功之后,Microsoft Visual Studio 2008集成开发环境(集成开发环境(IDE)将为)将为该应用程序创建一个默认该应用程序创建一个默认Windows窗体,名称为窗体,名称为“Form1.cs”。
19、打开。打开“解决方案资源管理器解决方案资源管理器”面板,可以面板,可以查看查看Sample_01_WFA Windows窗体应用程序包含的所有窗体应用程序包含的所有资源和数据,如图资源和数据,如图1.28所示。所示。C#从入门到实践从入门到实践1.4.3 Form1.cs1.4.3 Form1.cs窗体窗体在在“解决方案资源管理器解决方案资源管理器”面板中双击面板中双击“Form1.cs”节点,节点,打开打开Form1.cs窗体的设计界面,如图窗体的设计界面,如图1.29所示。此时,开所示。此时,开发人员可以直接将发人员可以直接将“工具箱工具箱”面板中的控件拖放到面板中的控件拖放到“Form1
20、.cs”窗体上。窗体上。C#从入门到实践从入门到实践1.4.4 Form1.Designer.cs1.4.4 Form1.Designer.cs文件文件首先展开首先展开“解决方案资源管理器解决方案资源管理器”面板中的面板中的“Form1.cs”节节点,然后双击点,然后双击“Form1.Designer.cs”节点打开节点打开Form1.Designer.cs文件。该文件中的代码为文件。该文件中的代码为Form1.cs窗体窗体的设计代码,用来描述的设计代码,用来描述Form1.cs窗体上的每一个控件。窗体上的每一个控件。C#从入门到实践从入门到实践1.4.5 Form1.cs1.4.5 Form
21、1.cs窗体的代码窗体的代码右击右击“解决方案资源管理器解决方案资源管理器”面板中的面板中的“Form1.cs”节点,节点,打开打开Form1.cs窗体的代码文件。该文件保存窗体的代码文件。该文件保存Form1.cs窗体窗体的事件等设计代码。的事件等设计代码。C#从入门到实践从入门到实践1.4.6 Program.cs1.4.6 Program.cs文件文件双击双击“解决方案资源管理器解决方案资源管理器”面板中的面板中的“Program.cs”节点节点,打开,打开Program.cs文件。该文件为文件。该文件为Sample_01_WFA Windows窗体应用程序提供主入口点。窗体应用程序提供
22、主入口点。C#从入门到实践从入门到实践1.4.7 AssemblyInfo.cs1.4.7 AssemblyInfo.cs文件文件首先展开首先展开“解决方案资源管理器解决方案资源管理器”面板中的面板中的“Properties”节节点,然后双击点,然后双击“AssemblyInfo.cs”节点打开节点打开AssemblyInfo.cs文件。该文件用来配置文件。该文件用来配置Sample_01_WFA Windows窗体应用程序的程序集信息。窗体应用程序的程序集信息。C#从入门到实践从入门到实践1.4.8 1.4.8 运行应用程序运行应用程序按下按下“F5”按钮或者单击按钮或者单击Microsof
23、t Visual Studio 2008集成开集成开发环境中的发环境中的“”“”按钮即可运行按钮即可运行Sample_01_WFA Windows窗体应用程序。该应用程序运行之后,显示的第一个对窗体应用程序。该应用程序运行之后,显示的第一个对话框为话框为“Form1”对话框,如图对话框,如图1.30所示。所示。C#从入门到实践从入门到实践1.5 1.5 小结小结本章主要介绍了搭建开发本章主要介绍了搭建开发Visual Studio 2008集成开发环境,集成开发环境,以及以及C#语言和语言和.NET Framework的概述。其中,读者要着的概述。其中,读者要着重掌握使用重掌握使用Visual
24、 Studio 2008集成开发环境开发第一个控集成开发环境开发第一个控制台应用程序和制台应用程序和Windows窗体应用程序的方法。只有这窗体应用程序的方法。只有这样,才能进行后续的开发。下一章将要介绍使用样,才能进行后续的开发。下一章将要介绍使用C#语言语言如何编写第一个应用程序。如何编写第一个应用程序。C#从入门到实践从入门到实践1.6 1.6 习题习题1在本章介绍的在本章介绍的Sample_01_WFA Windows窗体应用程序之窗体应用程序之上,实现以下功能。上,实现以下功能。(1)添加名称为)添加名称为“Dialog.cs”的窗体到应用程序中。的窗体到应用程序中。(2)运行该应用
25、程序。)运行该应用程序。C#从入门到实践从入门到实践第第2 2章章 C#C#基本概念基本概念C#语言从语言从1.0版本发展到版本发展到3.0版本经历了比较长的时间,现在版本经历了比较长的时间,现在已经是一种比较完善、简单、易学的编程语言。为了读已经是一种比较完善、简单、易学的编程语言。为了读者能够首先对者能够首先对C#语言有一个简单的认识,笔者特意在本语言有一个简单的认识,笔者特意在本章介绍了章介绍了Hello World应用程序和应用程序和C#语言的一些常见的基语言的一些常见的基本概念,主要介绍以下知识点。本概念,主要介绍以下知识点。l 创建创建Hello World应用程序;应用程序;l
26、编译编译Hello World应用程序;应用程序;l 运行运行Hello World应用程序;应用程序;l C#程序的概念扩展。程序的概念扩展。C#从入门到实践从入门到实践2.1 2.1 创建创建Hello worldHello world应用程序应用程序对于对于C#初学者而言,初学者而言,Hello world应用程序是应用程序是C#语言入门最语言入门最好的、简单的示例程序。该程序可以在控制台中显示好的、简单的示例程序。该程序可以在控制台中显示“Hello world”字符串。下面介绍书写该程序的基本方法字符串。下面介绍书写该程序的基本方法。C#从入门到实践从入门到实践2.1.1 2.1.1
27、 创建创建hello.txthello.txt文本文件文本文件为了方便初学者真正认识为了方便初学者真正认识C#程序,我们这里不使用集成开程序,我们这里不使用集成开发环境来编写本程序,而是使用记事本来编写程序。新发环境来编写本程序,而是使用记事本来编写程序。新建一个名称为建一个名称为“hello.txt”的文本文件,并打开该文件。的文本文件,并打开该文件。C#从入门到实践从入门到实践2.1.2 2.1.2 创建创建HelloWorldHelloWorld类类任何一个任何一个C#应用程序都是由类(应用程序都是由类(class)组成。一个)组成。一个C#应用应用程序可以包括一个类或多个类。类实际上是
28、对某种类型程序可以包括一个类或多个类。类实际上是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象程序设计(类具有共同特征的事物的抽象,是面向对象程序设计(Object-Oriented Programming,简称为,简称为OOP)的基础。)的基础。面向对象程序设计指一种程序设计范型,它将对象作为程序面向对象程序设计指一种程序设计范型,它将对象作为程序的基本单元。在面向对象程序设计中,最为基本的概念的基本单元。在面向对象程序设计中,最为基本的概念是类(是类(class)和对象()和对象(object
29、),对象又称为实例。),对象又称为实例。1类类2对象对象C#从入门到实践从入门到实践2.1.3 2.1.3 添加添加Main()Main()方法方法一旦创建一个类之后,但是不为该类添加任何成员,那么该一旦创建一个类之后,但是不为该类添加任何成员,那么该类就是一个空类,即它不能描述世界上的任何一种对象类就是一个空类,即它不能描述世界上的任何一种对象。为了使得类能够描述一种对象,那么就需要为该类添。为了使得类能够描述一种对象,那么就需要为该类添加一些属性和行为。加一些属性和行为。一个行为就产生一个动作。在类中,使用方法(一个行为就产生一个动作。在类中,使用方法(method)来描述这一行为。也就是
30、说,方法是一个类能做的事情来描述这一行为。也就是说,方法是一个类能做的事情(即一些计算或操作),但是并没有做这事情。作为一(即一些计算或操作),但是并没有做这事情。作为一条狗而言,它是会吠叫、会坐下、会吃。因此,为了能条狗而言,它是会吠叫、会坐下、会吃。因此,为了能够使用够使用Dog类描述狗,那么就需要在该类中定义以下类描述狗,那么就需要在该类中定义以下3个个方法。方法。l Bark(),吠叫。,吠叫。l Sit(),坐下。,坐下。l Eat(),吃。,吃。C#从入门到实践从入门到实践2.1.4 2.1.4 调用调用WriteLine()WriteLine()方法方法在在Dog类中,虽然定义了
31、狗的类中,虽然定义了狗的3个行为:吠叫、坐下和吃,个行为:吠叫、坐下和吃,但是并没有使这但是并没有使这3个行为发生。如果想要芊芊这一条狗吠个行为发生。如果想要芊芊这一条狗吠叫,那么就需要一个主动的动作使得芊芊吠叫。这一个叫,那么就需要一个主动的动作使得芊芊吠叫。这一个主动的动作就是调用该行为对应的方法,即通过调用方主动的动作就是调用该行为对应的方法,即通过调用方法使得该方法对应的行为发生。法使得该方法对应的行为发生。C#从入门到实践从入门到实践2.1.5 2.1.5 引入引入SystemSystem命名空间命名空间世界上存在很多狗,而且一些狗的名字也相同。譬如,张三世界上存在很多狗,而且一些狗
32、的名字也相同。譬如,张三家的狗叫芊芊,而李四家的狗也叫芊芊。那么如何区分家的狗叫芊芊,而李四家的狗也叫芊芊。那么如何区分这两家的狗呢?自然,称呼张三家的狗可能是这两家的狗呢?自然,称呼张三家的狗可能是“张三家张三家的芊芊的芊芊”,称呼李四家的狗可能是,称呼李四家的狗可能是“李四家的芊芊李四家的芊芊”。通过这种方式,就能够区分张三家和李四家的芊芊了。通过这种方式,就能够区分张三家和李四家的芊芊了。C#从入门到实践从入门到实践2.1.6 2.1.6 整理整理Hello worldHello world应用程序的代码应用程序的代码经过上述步骤之后,就已经书写了一个完整的经过上述步骤之后,就已经书写了
33、一个完整的C#应用程序应用程序Hello world应用程序,它的完整的程序代码如下。应用程序,它的完整的程序代码如下。using System;class HelloWorldstatic void Main()Console.WriteLine(Hello, World);C#从入门到实践从入门到实践2.2 2.2 编译和运行编译和运行Hello WorldHello World应用程序应用程序2.1小节仅仅书写了小节仅仅书写了Hello world应用程序的代码。如果要将应用程序的代码。如果要将这一段程序代码成为一个可以执行的文件,则需要使用这一段程序代码成为一个可以执行的文件,则需要使
34、用Microsoft C#编译器编译这一段代码。编译器编译这一段代码。C#从入门到实践从入门到实践2.3 C#2.3 C#程序的概念扩展程序的概念扩展在在2.1小节中介绍了小节中介绍了C#面向对象程序设计的一些基本概念,面向对象程序设计的一些基本概念,如类、对象、实例、属性、方法、调用方法等。除了上如类、对象、实例、属性、方法、调用方法等。除了上述这些概念之外,还有一些比较常用的概念,如继承性述这些概念之外,还有一些比较常用的概念,如继承性、多态性等。、多态性等。1继承性继承性2多态性多态性3接口接口C#从入门到实践从入门到实践2.4 2.4 小结小结本章主要介绍了本章主要介绍了“Hello
35、world”应用程序,包括创建应用程序,包括创建Hello World应用程序、编译应用程序、编译Hello World应用程序、运行应用程序、运行Hello World应用程序和分析应用程序和分析Hello World应用程序。其中,读者应用程序。其中,读者需要着重掌握使用记事本创建需要着重掌握使用记事本创建Hello World应用程序的方应用程序的方法。下一章将介绍法。下一章将介绍C#的类型。的类型。C#从入门到实践从入门到实践2.5 2.5 习题习题使用记事本撰写一个名称为使用记事本撰写一个名称为“Test_02”的的C#应用程序的代码应用程序的代码,并将此代码编译为一个名称为,并将此
36、代码编译为一个名称为“Test_02.exe”的可执行的可执行文件。文件。Test_02应用程序在控制台显示应用程序在控制台显示“This is a C# program.”字符串。字符串。C#从入门到实践从入门到实践第第3 3章章 类型类型类型是类型是C#语言中最为基本的概念之一。不同类型的变量将语言中最为基本的概念之一。不同类型的变量将拥有不同的数据存储方式和操作方法。拥有不同的数据存储方式和操作方法。C#语言的类型系语言的类型系统是统一的,它可以把任何类型的值都按照对象来处理统是统一的,它可以把任何类型的值都按照对象来处理。本章将讲解。本章将讲解C#语言中各种类型,主要介绍以下知识点语言
37、中各种类型,主要介绍以下知识点l 值类型;值类型;l 引用类型;引用类型;l 装箱;装箱;l 拆箱。拆箱。C#从入门到实践从入门到实践3.1 3.1 类型概述类型概述C#语言中的每一个类型都直接或间接派生于语言中的每一个类型都直接或间接派生于object类型,即类型,即object类型是类型是C#语言所有类型的最终基类型。语言所有类型的最终基类型。C#语言的语言的类型可以分为以下类型可以分为以下3种类型。种类型。l 值类型(值类型(value-type),它的变量直接包含其数据。),它的变量直接包含其数据。l 引用类型(引用类型(reference-type),它的变量只存储对其数据),它的变
38、量只存储对其数据的引用(即访问其数据的访问地址)。引用类型的变量的引用(即访问其数据的访问地址)。引用类型的变量又称为对象(又称为对象(object)。)。l 指针类型(指针类型(point-type),和),和C、C+语言中的指针类似语言中的指针类似,而且只能用作在不安全代码中。由于在,而且只能用作在不安全代码中。由于在C#编程中很少编程中很少使用指针类型,因此,在此不做详细介绍。使用指针类型,因此,在此不做详细介绍。C#从入门到实践从入门到实践3.2 3.2 值类型值类型值类型要么是结构类型,要么是枚举类型。值类型的变量直值类型要么是结构类型,要么是枚举类型。值类型的变量直接包含其数据,而
39、且其值不可能为接包含其数据,而且其值不可能为null。在操作值类型的。在操作值类型的变量时,只会影响该变量的数据,而不会影响另外一个变量时,只会影响该变量的数据,而不会影响另外一个变量的值。所有的值类型都直接或间接派生于变量的值。所有的值类型都直接或间接派生于System.ValueType类型。类型。值类型包括结构类型、枚举类型、布尔类型、自定义结构类值类型包括结构类型、枚举类型、布尔类型、自定义结构类型、型、sbyte、byte、char、short、ushort、int、uint、long、ulong、float、double和和decimal类型。其中,类型。其中,C#语言提语言提供了
40、一种被称为供了一种被称为“简单类型(简单类型(simple type)”的预定义结的预定义结构类型。这些类型通过构类型。这些类型通过C#保留字标识,如保留字标识,如char、int等。等。本节将详细介绍值类型的知识点。本节将详细介绍值类型的知识点。C#从入门到实践从入门到实践3.2.1 System.ValueType3.2.1 System.ValueType类型类型所有值类型都直接或间接从所有值类型都直接或间接从System.ValueType类隐式继承而类隐式继承而来,并且任何类型不能从值类型派生而来。来,并且任何类型不能从值类型派生而来。System.ValueType本身是一个类,它
41、只包含以下本身是一个类,它只包含以下3个方法个方法。l Equals(),判定当前实例与指定的对象是否相等。,判定当前实例与指定的对象是否相等。l GetHashCode(),返回当前实例的哈希代码。该哈希代码,返回当前实例的哈希代码。该哈希代码用于哈希表(一种数据结构)的散列运算。用于哈希表(一种数据结构)的散列运算。l ToString(),返回当前实例的完全限定类型名称。,返回当前实例的完全限定类型名称。C#从入门到实践从入门到实践3.2.2 3.2.2 整数类型整数类型整数类型包括整数类型包括9种类型,如种类型,如sbyte、byte、short等。它们的具体说明等。它们的具体说明、.
42、NET Framework中的名称和取值范围如表中的名称和取值范围如表3.1所示。所示。1int类型类型2long类型类型3char类型类型类型描述.NET Framework中的名称取值范围sbyte有符号8位整数System.SByte-128127byte无符号8位整数System.Byte0255short有符号16位整数System.Int16-3276832767ushort无符号16位整数System.UInt160!65535int有符号32位整数System.Int32-21474836482147483647uint无符号32位整数System.UInt3204294967
43、295long有符号64位整数System.Int64-92233720368547758089223372036854775807ulong无符号64位整数System.UInt64018446744073709551615char无符号16位整数System.Char065535,16位的Unicode字符。C#从入门到实践从入门到实践3.2.3 3.2.3 浮点型浮点型C#语言包括两种浮点型:语言包括两种浮点型:float和和double。float类型表示类型表示32位位的单精度浮点数,它的取值范围为的单精度浮点数,它的取值范围为1.5e-453.4e38。double类型表示类型表示
44、64位的双精度浮点数,它的取值范围为位的双精度浮点数,它的取值范围为5.0e-3241.7e308。浮点数包括以下。浮点数包括以下3种特殊的值。种特殊的值。l 正零和负零正零和负零l 正无穷大和负无穷大正无穷大和负无穷大l 非数字(非数字(Not-a-Number)值)值C#从入门到实践从入门到实践3.2.4 decimal3.2.4 decimal类型类型decimal类型表示类型表示128位的数值,取值范围为位的数值,取值范围为1.0e-287.9e28,特别适用于财务计算和货币计算。和,特别适用于财务计算和货币计算。和float类型一样,在书写类型一样,在书写decimal类型的值时,需
45、要在数值后添类型的值时,需要在数值后添加后缀加后缀m,否则编译出错。,否则编译出错。与浮点型相比,与浮点型相比,decimal类型具有较高的精度,但取值范围类型具有较高的精度,但取值范围较小。因此,从浮点型到较小。因此,从浮点型到decimal类型的转换可能会产生类型的转换可能会产生溢出异常,而从溢出异常,而从decimal类型到浮点型的转换则可能导致类型到浮点型的转换则可能导致精度损失。正是由于这些原因,所以,在浮点型和精度损失。正是由于这些原因,所以,在浮点型和decimal类型之间不存在隐式转换。如果要转换浮点型到类型之间不存在隐式转换。如果要转换浮点型到decimal类型,则必须使用强
46、制转换方法。类型,则必须使用强制转换方法。C#从入门到实践从入门到实践3.2.5 bool3.2.5 bool类型类型bool类型表示布尔逻辑量。它只包含两个值:类型表示布尔逻辑量。它只包含两个值:true和和false,而且这两个值意义恰好相反。而且这两个值意义恰好相反。C#从入门到实践从入门到实践3.2.6 3.2.6 枚举类型枚举类型枚举(枚举(enum)类型也是一种值类型,它具有命名常量的独)类型也是一种值类型,它具有命名常量的独特的类型。每个枚举类型都有一个基础类型,该基础类特的类型。每个枚举类型都有一个基础类型,该基础类型必须为型必须为byte、sbyte、short、ushort
47、、int、uint、long或或ulong。其中,默认的基础类型为。其中,默认的基础类型为int。枚举类型一般包含一个或多个枚举值,每一个枚举值之间用枚举类型一般包含一个或多个枚举值,每一个枚举值之间用逗号(逗号(,)分隔。枚举值又称为枚举数,它的默认基础类)分隔。枚举值又称为枚举数,它的默认基础类型为型为int。默认情况下,第一个枚举数的值为。默认情况下,第一个枚举数的值为0,后面的每,后面的每一个枚举数的值依次增一个枚举数的值依次增1。C#从入门到实践从入门到实践3.2.7 3.2.7 结构类型结构类型结构类型也是一种值类型,它可以声明常量、字段、方法、结构类型也是一种值类型,它可以声明常
48、量、字段、方法、属性、索引器、运算符、实例构造函数、静态构造函数属性、索引器、运算符、实例构造函数、静态构造函数和嵌套类型。有关结构类型的知识点将在第和嵌套类型。有关结构类型的知识点将在第9章中进行详章中进行详细介绍。细介绍。C#从入门到实践从入门到实践3.2.8 3.2.8 实例一:把整数转换为二进制数实例一:把整数转换为二进制数【实例【实例3-1】实现把整数转换为二进制数的功能。该功能由】实现把整数转换为二进制数的功能。该功能由ConvertIntToBinary(int n)静态函数实现,静态函数实现,n参数表示被参数表示被转换的整数,该函数返回二进制数的字符串形式。转换的整数,该函数返
49、回二进制数的字符串形式。C#从入门到实践从入门到实践3.2.9 3.2.9 实例二:把二进制数转换为整数实例二:把二进制数转换为整数【实例【实例3-2】实现把二进制数转换为整数的功能。该功能由】实现把二进制数转换为整数的功能。该功能由ConvertBinaryToInt(string binary)静态函数实现,静态函数实现,binary参数表示被转换的二进制数的字符串形式,该函数返回参数表示被转换的二进制数的字符串形式,该函数返回一个整数。一个整数。C#从入门到实践从入门到实践3.3 3.3 引用类型引用类型引用类型主要包括引用类型主要包括6种类型:种类型:object类型、类型、strin
50、g类型、类类类型、类类型、数组类型、接口类型和委托类型。引用类型变量的型、数组类型、接口类型和委托类型。引用类型变量的值是对该类型的某个实例的一个引用。其中,类型的实值是对该类型的某个实例的一个引用。其中,类型的实例被称为对象。在引用类型中,存在一个很特殊的值:例被称为对象。在引用类型中,存在一个很特殊的值:null。null能够兼容所有的引用类型,表示能够兼容所有的引用类型,表示“每一被引用每一被引用的实例的实例”。本节将详细介绍引用类型的知识点。本节将详细介绍引用类型的知识点。C#从入门到实践从入门到实践3.3.1 3.3.1 对象类型对象类型对象(对象(object)类型是)类型是C#类
51、型系统中所有其他类型的最终基类型系统中所有其他类型的最终基类。类。C#中的每种类型都是直接或间接从中的每种类型都是直接或间接从object类类型派生类类型派生的。因此,的。因此,C#中的任何类型都可以转换为中的任何类型都可以转换为object类型。类型。C#从入门到实践从入门到实践3.3.2 3.3.2 字符串类型字符串类型字符串(字符串(string)类型是直接从)类型是直接从object继承而来的类类型,它继承而来的类类型,它对应着对应着.NET Framework中的中的System.String类型。类型。C#从入门到实践从入门到实践3.3.3 3.3.3 类类型类类型类(类(clas
52、s)类型是)类型是C#中最常用的类型。它是一个数据结构中最常用的类型。它是一个数据结构,能够定义数据成员、函数成员和嵌套类型等内容。其,能够定义数据成员、函数成员和嵌套类型等内容。其中,数据成员包括常量和字段,函数成员包括方法、属中,数据成员包括常量和字段,函数成员包括方法、属性、事件、索引器、运算符、实例构造函数、析构函数性、事件、索引器、运算符、实例构造函数、析构函数和静态构造函数。和静态构造函数。特别地,类类型还支持一种被称为特别地,类类型还支持一种被称为“继承继承”的机制。继承是的机制。继承是指派生类可用来扩展和专门化基类的一种机制。有关类指派生类可用来扩展和专门化基类的一种机制。有关
53、类类型的知识点将在第类型的知识点将在第8章中进行详细介绍。章中进行详细介绍。C#从入门到实践从入门到实践3.3.4 3.3.4 数组类型数组类型数组(数组(Array)是一种数据结构,它可以将多个类型相同的)是一种数据结构,它可以将多个类型相同的元素组合为一个整体,从而通过数组统一访问或操作这元素组合为一个整体,从而通过数组统一访问或操作这些元素。数字可以通过计算索引来访问数组中的每一个些元素。数字可以通过计算索引来访问数组中的每一个元素。每一个元素的类型称为数字的元素类型。元素。每一个元素的类型称为数字的元素类型。C#从入门到实践从入门到实践3.3.5 3.3.5 接口类型接口类型接口(接口
54、(interface)类型和类类型非常相似。它也是一个数据)类型和类类型非常相似。它也是一个数据结构,能够声明数据成员和函数成员。其中,数据成员结构,能够声明数据成员和函数成员。其中,数据成员主要包括属性,函数成员包括方法和事件。主要包括属性,函数成员包括方法和事件。C#从入门到实践从入门到实践3.3.6 3.3.6 委托类型委托类型委托(委托(delegate)也是一种数据结构,它能够引用一个或多)也是一种数据结构,它能够引用一个或多个方法。特别地,对于实例方法,它还能够引用这些方个方法。特别地,对于实例方法,它还能够引用这些方法所对应的对象实例。读者如果熟悉法所对应的对象实例。读者如果熟悉
55、C+中的函数指针,中的函数指针,那么就不难理解委托这一概念了。那么就不难理解委托这一概念了。委托类型类似于委托类型类似于C+中的函数指针,但是它是类型安全的。中的函数指针,但是它是类型安全的。委托类型能够将方法作为参数进行传递,并且还可以定委托类型能够将方法作为参数进行传递,并且还可以定义回调方法。义回调方法。C#从入门到实践从入门到实践3.4 3.4 装箱和拆箱装箱和拆箱引用类型总是分配在托管堆上,而值类型总是分配在堆栈上引用类型总是分配在托管堆上,而值类型总是分配在堆栈上。有时,程序需要获取指向值类型的引用。此时,需要。有时,程序需要获取指向值类型的引用。此时,需要将值类型转换为引用类型,
56、这一操作被称为装箱。反之将值类型转换为引用类型,这一操作被称为装箱。反之,把引用类型转换为值类型称为拆箱。,把引用类型转换为值类型称为拆箱。装箱和拆箱是装箱和拆箱是C#的类型系统中两个很重要的概念,它在值的类型系统中两个很重要的概念,它在值类型和引用类型之间的架起了一座桥梁。通过装箱和拆类型和引用类型之间的架起了一座桥梁。通过装箱和拆箱操作,可以将任何值类型的变量的值转换为引用类型箱操作,可以将任何值类型的变量的值转换为引用类型的变量的值。反之,也可以进行转换。特别地,有了装的变量的值。反之,也可以进行转换。特别地,有了装箱和拆箱操作,就可以将箱和拆箱操作,就可以将C#类型系统中的任何类型的值
57、类型系统中的任何类型的值最终都可以按对象来处理。最终都可以按对象来处理。C#从入门到实践从入门到实践3.4.1 3.4.1 装箱装箱装箱是指将值类型隐式转换为引用类型。对于值类型而言,装箱是指将值类型隐式转换为引用类型。对于值类型而言,装箱的具体操作为:首先分配一个对象实例,然后将值装箱的具体操作为:首先分配一个对象实例,然后将值类型的值复制到该实例中。装箱前后不是同一个实例。类型的值复制到该实例中。装箱前后不是同一个实例。对于引用类型而言,装箱前后都共享同一个实例。对于引用类型而言,装箱前后都共享同一个实例。C#从入门到实践从入门到实践3.4.2 3.4.2 拆箱拆箱拆箱是指将引用类型隐式转
58、换为值类型。拆箱的具体操作包拆箱是指将引用类型隐式转换为值类型。拆箱的具体操作包括以下括以下2个步骤。个步骤。(1)检查该对象实例是否为给定值类型的一个装了箱的值)检查该对象实例是否为给定值类型的一个装了箱的值。(2)将值从实例中复制出来。)将值从实例中复制出来。C#从入门到实践从入门到实践3.5 3.5 小结小结本章主要介绍了本章主要介绍了C#语言的类型系统的基础知识,如值类型语言的类型系统的基础知识,如值类型、引用类型、类型转换、装箱、拆箱等。其中,读者要、引用类型、类型转换、装箱、拆箱等。其中,读者要着重掌握值类型和引用类型,为后续编写着重掌握值类型和引用类型,为后续编写C#程序代码奠程
59、序代码奠定基础。下一章将要介绍定基础。下一章将要介绍C#语言中的变量。语言中的变量。C#从入门到实践从入门到实践3.6 3.6 习题习题在在Visual Studio 2008集成开发环境中创建名称为集成开发环境中创建名称为“Test_03”的控制台应用程序,并实现以下功能。的控制台应用程序,并实现以下功能。(1)将名称为)将名称为“class1.cs”的文件添加到该应用程序中。的文件添加到该应用程序中。(2)创建一个整型变量)创建一个整型变量vint和一个字符串变量和一个字符串变量vstring,将,将vint变量转换为字符串,将变量转换为字符串,将vstring变量转换为一个整数。变量转换
60、为一个整数。C#从入门到实践从入门到实践第第4 4章章 变量变量变量是变量是C#语言中最为基本的概念之一,它表示存储位置。语言中最为基本的概念之一,它表示存储位置。每一个变量的值由其类型确定。本章将讲解每一个变量的值由其类型确定。本章将讲解C#语言中各语言中各种变量,主要介绍以下知识点。种变量,主要介绍以下知识点。l 变量概述;变量概述;l 变量分类;变量分类;l 变量赋值;变量赋值;l 使用值参数传递数据;使用值参数传递数据;l 使用使用ref参数传递数据;参数传递数据;l 使用使用out参数传递数据;参数传递数据;l 变量转换。变量转换。C#从入门到实践从入门到实践4.1 4.1 变量概述
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 休克护理查房
- 品牌形象的数字修复与再造
- 办公效率提升数字图书馆的助力作用
- 基于数字技术的健康教育内容创新研究
- 自来水厂改扩建工程实施方案(参考)
- 中医医院迁建项目可行性研究报告(参考)
- 大数据驱动的智能决策在企业管理中的应用研究
- 人民医院改扩建项目规划设计方案(参考范文)
- 航空燃料项目可行性研究报告(范文参考)
- 2025年中国单扶手浴缸市场现状分析及前景预测报告
- 三年级美术下册 《多彩的窗户》教学课件
- JJG 700 -2016气相色谱仪检定规程-(高清现行)
- 五方责任主体授权书和承诺书
- 《桂枝香·金陵怀古》ppt课件(沐风学堂)
- 《泵站运行工》word版
- API SPEC 5DP-2020钻杆规范
- 大学无机化学(吉林大学、武汉大学、南开大学版) 第17章 卤素—— 内蒙古民族大学)
- 榆林智能矿山项目招商引资方案【参考范文】
- 医院版LIS操作手册(共84页)
- 基于蓄热式加热炉PLC控制系统设计(共43页)
- 瓦楞纸箱检验标准
评论
0/150
提交评论