




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录第一章 OOP 和 C#1.1 .NET 概述 .NET 概述 .NET Framework 概述1.1.3 Visual studio .NET 开发环境1.1.4 编写一个 Visual studio .NET 项目 1.2 C#语言C#简介C#语言的特点 C#与其他语言的比较错误!未定义书签。...9面象的编程语言错误!未定义书签。编写 C#应用程序命名空间 类和类的方法 错误!未定义书签。程序的输入和输出 程序的编译和执行 错误!未定义书签。1.2.10 添加注释 错误!未定义书签。第二章 C#程序设计基础2.1 数据类型 2.
2、.42.1.5数据类型分类 值类型错误!未定义书签。类型 错误!未定义书签。数据类型间的转换 装箱与拆箱2.2 变量与常量错误!未定义书签。常量(Constant)变量(Variable)错误!未定义书签。2.3 运算符和表达式2.3.1 运算符2.3.2 赋值运算符及其表达式 ...82.3.9算术运算符及其表达式 乘法和除法运算取余运算符关系运算符及其表达式逻辑运算及其表达式位运算符及其表达式条件运算符及其表达式2.3.10 其他运算符2.4 C#程序结构2.4.1 C#的程序流程 .32.
3、4.4条件选择结构 循环结构 跳转语句 第三章 面象的程序设计(OOP)3.1 面3.1.1 面象编程简介 象编程概述.33.2 类..4类和对象 面象语言的重要特性类的定义 修饰符类的实例化类的成员 3.2.5 this 关键字 3.3 继承和多态...6继承覆盖多态虚方法抽象类和抽象方法 密封类和密封方法 3.4 接口 接口的定义接口的继承错误!未定义书签。接口的成员接口的实现错误!未定义书签。错误!未定义书签。第一章 OOP 和 C#面象方法已经成为开发的一种主要方法。面象编程(OOP)
4、可以更容易地和重用现有程序。C# 是一种简洁、类型安全的面Framework 上运行的各种安全、可靠的应用程序。象的语言,开发可以使用它来构建在 .NET.NET Framework 是微软公司推出的新,包含公共语言运行时(CLR)和.NET 框架类库(FCL)。.NET Framework 是整个.NET的关键支撑,成为众多高级语言和应用程序模型提供各种服务的重要基石,是开发构建桌面应用程序和 Web 应用程序的可靠途径。Visual Studio 2008 提供了高级代码编辑器、方便的用户微软公司推出的集成开发环境界面设计器、集成调试器和许多其他工具,使您可以更容易在 C# 语言 3.0
5、版和 .NET Framework 3.5版的基础上开发应用程序。通过本章的学习,可以达到以下目标:了解面象编程的基本概念了解.NET Framework了解 C#语言的概貌的组件掌握控制台应用程序的开发方法掌握 C#编译器的使用方法掌握 C#程序的调试方法本章目标1.1 .NET 概述内容提要2000 年,微软向全球宣布其性的,并命名为.NET。.NET的目标是实现网络的“3A”(Anywhere Anytime Anydevice),即在任何地方任何时候任何工具都能通过.NET 的服务获得网络上的任何信息;同时,微软还宣布了基于.NET的新产品计划,其中包括了新一代的微软Windows 操
6、作系统、微软 Office、MSN 互联网网络服务、Visual Studio开发系统;随后,.NET的重要内容.NET Framework 发布,它是开发.NET应用程序的基础,到本书成稿时,.NET 框架已经历了 1.0、1.1、2.0、3.0、3.5 共 5 个版本。.NET Framework 是.NET的,是为面向服务开发模式而推出的完整的解决方案。其主要组件包括公共语言运行时(CLR)和.NET 框架类库(FCL),该支持 20余种编程语言编译器,可帮助开发更轻松地构建和靠性。本节主要学习以下内容:系统,并能提高系统的性能、安全性和可.NET目标.NET Framework 的体系
7、结构Visual Studio .NET 开发环境Visual Studio .NET 基本操作1.1.1 .NET 概述1.NET.NET 是微软于 2000 年向全球推出的性的,其终极目标是实现网络的“3A”(Anywhere Anytime Anydevice),即在任何地方任何时候任何工具都能通过.NET 的服务获得网络上的任何信息。比如,风靡全球的机 XBOX 360 可以通过.NET中的一个组成部分XBOXLive 与任意国家的使用任意设备的玩家进行网络对战,除此之外,玩家还可以用 PDA 或者手机等非 PC 设备在网上戏装备。装备,回到家中又能通过计算机或者 XBOX 360机来
8、使用这些游仅管.NET是一个志向远大的工程,但它首先是一个开发。它定义了公用语言运行库(CLR ,Common Language Runtime),有了它,就可以很容易地设计出能够跨语言交互的组件和应用程序,也就是说,用不同语言编写的对象可以互相通信,并且它们的行为可以紧密集成。.NET 还了编程类库(FCL,Framework Class Library)并提供了对下一代网络通信标准XML(可扩展标记语言,Extensible Markup Language)的完全支持,使应用程序的开发变得更容易、更简单。总之,.NET 是一种面向网络、支持各种用户终端的开发环境;它的目标是面向所有开发商与
9、运营商彻底改变的开发方式、方式、使用方式。2.NET 的组件.NET提供了多种的技术和服务,运用这些技术和服务能够简化基于 Web 的应用程序开发。开发工具Visual Studio .NET 提供了一个能够基于.NET 框架来创建应用程序的开发环境,该开发环境提供了一些工具,这些工具可以简化 Web 应用程序和 XML Web Service 的创建、部署和升级。用.NET 开发环境所创建的Web 应用程序和 XML Web Service 具有安全性、可伸缩性以及高可用性的特点。设备设备包括个人计算机、便携式计算机、工作站、机、手持计算机、Tablet PC 以及控制台等。这些智能化设备可
10、以及它们所处的位置。XML Web Service 和数据,而无需考虑正在使用的设备类型、数量以用户体验.NET 体验(.NET Experience)是一些使用 XML Web Service 的应用程序,它们提供了一种集成而有效的方法,使得用户可以从ernet 或是从独立的应用程序获得信息。服务器组件通过提供对XML Web Service 的支持,.NET Entrise Server提高了系统、应用程序以及其他合作伙伴的集成速度。由于支持 XML,企业可以在先前系统的基础上继续开发,而不是替换这些系统。例如,Hostegration Server 提供了对大型机的简单,Biz Talk
11、 Server则提供了现有数据格式和 XML 数据格式之间的自动转换功能。XML Web Service通过使用XML Web Service,应用程序可以共享数据并调用其他应用程序,而无需考虑这些应用程序的创建方式、运行该应用程序的操作系统类型或类型,以及这些应用程序的设备。1.1.2 .NET Framework 概述.NET Framework 是应用程序开发。.NET的重要内容,它简化了在高度分布式ernet 环境中的1.NET Framework 体系结构如图 1.1.2 所描述的那样,.NET 框架运行在操作系统上,是.NET最基础的框架。它提供了创建、部署和运行.NET 应用的环
12、境,包含 CLR 和框架类库,并且支持多种开发语言,如 C#、VB.NET、VC+等。体系结构的最外层就是各种应用程序,如一般的窗口应用程序以及以因特网为基础的应用程序。图 1.1.1 .NET Framework 环境2.NET Framework 的组件.NET Framework 由.NET Framework 类库(FCL)和公共语言运行时(CLR)这两个主要组件组成,图 1.1.3 显示了.NET Framework 的组件及其要素。图 1.1.2 .NET Framework 组件().NET Framework 类库(FCL).NET Framework 类库是一个综合性的面象的
13、,与公共语言运行库紧密集成的可重用的类型集合。该类库是面象的,是对 Windows API 封装的全新设计,为开发提供了一个的、面象的、分层的和可扩展的庞大类库。第组件可与 .NET Framework 中的类无缝集成。.NET Framework 类库能够完成一系列常见编程任务(包括诸如字符串管理、数据收集、数据库连接以及文件等任务)。除这些常见任务之外,类库还包括支持多种开发方案的类型,可使用 .NET Framework 开发的应用程序和服务就包括控制台应用程序 、Windows GUI 应用程序(Windows 窗体)、ASP.NET 应用程序、XML Web servi等。类库中具体
14、内容如下所示:Web Forms 提供一组网页设计的类,Web Forms 与 HTML 表单类似。Web Servi包括一组设计 Web 服务的类。Web 服务就是一个应用程序,它向外界出一个能够通过 Web 进行调用的 API。例如,网络上有某个提供天气查询功能的 Web 服务组件,使用它,只需建立一个网页(或其它应用程序)调用此eb 服务组件发布的某个方法,网,并将其作为查询参数传给 Web 服页代码只需做两件事情,一是接受用户输入的务组件,二是显示 Web 服务组件返回的天气情况数据。至于得到对应的天气情况将由eb 服务组件全权负责。Win Forms 提供一组设计和开发Windows
15、 窗体应用程序的类。ASP.NET 提供一组用于创建 Web 应用程序的类。ADO.NET 提供一些可与数据库进行交互的类。是如何被处理并最终XML 提供一组数据,它有、搜索和转换XML 数据的类。XML 的全称是可扩展标记语言,用途是领域的唯一公共语言的美称,这意味着以XML 格式的数据将更容易在不同的、程序间共享。基本框架类提供实现基本功能所需的类,如输入输出、字符串等。、安全性管理和网络通信()公共语言运行时(CLR):公共语言运行时是.NET 框架的基础,主要负责组件管理、内存分配、启动和停止线进程,以便强制执行安全策略等,可以简单看作一个在执行时管理代码的。以运行时为目标的代码称为托
16、管代码,而不以运行时为目标的代码称为非托管代码。CLR 包括的主要内容如下所示:通用语言规范(CLS Common Language specification)规定了.NET上运行的所有语言都必须遵循的基本语言功能的公共子集,即这些语言必须支持的最小规范要求。在.NET Framework 中,几乎所有(但不是所有)的类都是与 CLS 兼容的。在 MSDN 文档说明中,不兼容的类和方法都被特别标记为不兼容,例如 System 命名空间中的 U 32 结构。U 32 表示 32 位无符号整数。并不是所有的语言(例如 Visual Basic.NET 或 J#)都支持无符号的数据类型,这种数据类
17、型就是与 CLS 不兼容的。公共类型系统(CTS Common Type System)定义了一组语言编译器必须遵循的规则,以定义、使用和类型和值类型。因此,遵循 CTS,在不同语言中编写的对象才能彼此交互。1.1.3Visual studio .NET 开发环境Visual Studio .NET 是创建网络应用程序、桌面应用程序等的一套完整的开发工具。“VisualBasic.NET”、“Visual C+ .NET”、“Visual C# .NET”及“Visual J+ .NET”全部都使用相同的集成开发环境(IDEegrated Development Environment),该集
18、成开发环境让它们能共享工具并能够协助混合语言项目的创建。此外,这些语言可利用“.NET Framework”强大的功能,简化 ASP Web 应用程序与XML Web service 开发的工作,它设计的目标是尽可能简单地编写(coding)、调试(debgging)、编译(compiling)和装配(assembly)程序。默认的Visual Studio .NET 开发环境布局如图 1.1.4 所示。图 1.1.3Visual Studio .NET 开发环境1IDE 的起始页第一次打开 Visual Studio IDE 时,将显示起始页(如图 1.1.5),起始页是打开 IDE 的第一
19、个窗口(是一个HTML 格式的页面)。每次启动 IDE 时,该页作为默认页显示,最近使用的项目将出现在这个列表上,可以打开一个现有的项目,或者选择“新建项目”以开始一个新项目。图 1.1.4 Visual Studio IDE 的起始页在起始页的页中,“最近的项目”列出已存在的项目,并包含“打开”项目和 “创建”项目的选项。 “开始”列出了启用不同应用环境的。它不仅提供了开发项目的准备环ernet 的服务功能,如联机搜索 MSDN 的境,而且还提供了许多等。2.Web 浏览器到文章、事件和话题在 IDE 中有一个内嵌的Web 浏览器,激活 Web 浏览器的方法:单击“视图其他窗口Web 浏览器
20、”命令(或按 Ctrl+Alt+R 组合键)。3.解决方案资源管理器(Solution Explorer)如在 IDE 中已创建方案或项目,则图 1.1.5 的右上方会出现解决方案资源管理器窗口。一个解决方案由几个项目组成,一个项目又包含了多个文件。解决方案资源管理器窗口显示了当前方案的所有项目及项目下所有文件的树型组织结构。激活解决方案资源管理器的方法:单击“视图解决方案资源管理器”命令(或按 Ctrl+Alt+L 组合键)。一个典型的解决方案,可能包含好几个组件项目和一个使用它们的用户界面(WinForms 或 WebForms)项目。一般用粗体显示的项目,表示它是启动项目,即程序执行的开
21、始点。也可以在任意项目上右击,在弹出的菜单中选择“设置为启动”命令,就可以把该项目设为启动项目。图 1.1.6中显示了Game_GoBang 的解决方案中包含了两个项目。一个是 AbsolutenessGoBang,一个是 GoBang,其中前者是启动项目。图 1.1.5 解决方案资源管理器窗口“属性”按钮:将打开“属性页”窗口。通过本窗口,开发可以查看和设置项目及解决方案的一些配置信息。注意,当点击此按钮时,将根据聚焦的是项目名称还是解决方案名称来决定显示的是项目的属性页还是解决方案的属性页。在解决方案的属性页中可以设置启动项目等信息;项目属性页中可以查看或设置项目名称、项目出类型等配置信息
22、。路径、输出文件名称及输“显示所有文件”按钮:显示当前方案包含的所有文件夹和文件。 “刷新”按钮:刷新当前选定方案的状态。“查看代码”按钮:为选定的文件打开代码编辑器窗口。“查看类关系图”按钮:为选定的文件打开类关系图。4.类视图窗口(Class View)类视图窗口显示了当前项目中包含的所有类、方法和特性等信息的树形视图。激活类视图窗口的方法:”视图类视图”命令,或单击5.属性窗口(Property)中的”类视图”按钮。属性窗口被用来查看或设置控件、类或项目的特征属性。这个属性窗口用起来很简单,只需选中控件或类,该窗口就会显示相应项的特征及值的列表,可以对值进行编辑或直接在下拉框中选择值,从
23、而对控件或类做出状态设置。一般做Web Form 和Win Form 开发时使用。图 1.1.6 属性窗口6.工具箱窗口(Toolbox)该窗口平时隐藏为“工具箱”,当鼠标指针移至该上时,将即刻弹出一个工具箱窗口;而当鼠标指针移到该窗口的,此窗口又缩回成。此工具箱包含了许多用于界面设计的控件,一般在进行Web Form 或 Win Form 设计时使用。6.服务器资源管理器窗口(Server Explorer)在 IDE 中编写的应用程序可以包含网络中不同服务器上的许多组件。使用服务器资源管理器,可在 IDE 中集中和管理一个解决方案所涉及的所有“服务器”和“数据连接”(这是此窗口的两大服务项
24、目)。激活该窗口的方法:单击“视图服务器资源管理器”命令(或按 Ctrl+Alt+S 组合键)。要在此窗口中一个服务器,之前必须先该服务器,方法是:在服务器资源管理窗口中,右击“服务器”,选择“添加服务器”命令,将弹出一个框,在其中输入计算机名称或 IP 地址等连接信息。通过对数据库连接,可以修改表、视图和7文档窗口过程。屏幕中心显示代码的窗口是“文档窗口”。注意窗口顶部的选项卡,通过选项卡可以在打开的文档之间进行切换。1.1.4 编写第一个Visual studio .NET 项目以下采用 C#编写一个简单的控制台应用程序,运行结果如图 1.1.8 所示。本应用程序将在控制台屏幕上直接输出字
25、符串“o World!”。图 1.1.7 示例项目效果1设置工作环境(1)运行Visual Studio IDE单击 Windows 桌面“开始”按钮并将鼠标指针移动到“程序”。Visual Studio 2008找到在弹出的子菜单中,选定Visual Studio 2008(2)创建新项目框将会打开(参见图 1.1.9)。确保在项目类型单击“文件新建项目”,“新建项目”框中选定了 Visual C# Projects,并在模版框中选定控制台应用程序。图 1.1.8 选择项目类型并定义项目名称在名称栏中输入“oWorld1_1_1”作为新的项目名称,在解决方案名称框中输入“第一章 OOP 和
26、CS”作为解决方案名称,点击“确定”按钮,将弹出新项目窗口的编辑窗口。Visual Studio 开发环境会关于项目保存位置,点击浏览按钮选定一个常用的路径。为新解决方案自动创建一个新文件夹。图 1.1.9 包含新项目的Visual Studio 2008(3)设置环境选择“窗口重置窗口布局”,以使 IDE 恢复到默认布局。服务器资源管理器和工具箱将在同一个位置上被设置为自动隐藏。本项目并不需要这两个窗口。要隐藏解决方案资源管理器窗口,可以单击窗口顶部的“图钉 ”图标。点击”关闭”按钮,窗口将关闭。可通过“帮助”菜单,点击“索引”项打开Visual Studio 2008 文档窗口,点击“动态
27、帮助”项则在当前窗口中打开动态帮助窗口,但会降低程序开发速度。2编写代码往屏幕输出“o World!”字符串(1)在 Main 方法中添加代码: Console.Wriine(o World!);如图 1.1.10 所示。图 1.1.10 添加代码的 Main 方法3运行项目(1)运行该项目,可使用下面三种方法之一。打开“调试”菜单并选择“启动调试”菜单项。也可以选择“调试”菜单下的“开始执行(不调试)”菜单项,这种方式运行程序不会自动关闭控制台窗口。按上的“启动调试”按钮按 F5 或是 Ctrl+F5, 他们分别是“启动调试”和“开始执行(不调试)”菜单项的快捷方式。本节中已经学习如下主要内
28、容:1.NET Framework 由类库(FCL)和公共语言运行时(CLR)两个主要组件。2公共语言运行时(CLR 是.NET 框架的基础,主要负责组件管理、内存分配、启动和停止线进程,以便强制执行安全策略等,可以简单看作一个在执行时管理代码的。以运行时为目标的代码称为托管代码,而不以运行时为目标的代码称为非托管代码。CLR 包括的主要内容有 CLS 和 CTS。3Visual Studio 2008 是创建网络应用程序、桌面应用程序等程序的一套完整的开发工具。通过它可以简化编辑、编译、运行程序的工作。4.要往控制台屏幕输出字符串,可通过 Console.Wriine(“字符串内容”);语句
29、完成。1结合中图 1.1.2 所示,说明.NET Framework 的组件,并解释每个组件所实现的功能。2基于 Visual studio .NET 开发环境,编写一个简单的控制台应用程序,显示“e CMU”的欢迎信息,并 控制字 符串在屏 幕上的 输出在 顶端大约居 中的位 置。 ( 提示:可 通过 Console.SetCursorition(35, 0);代码来完成)作业小结1.2 C#语言内容提要C#是一种简单、现代、面象和类型安全的编程语言,由 C 和 C+发展而来。C#(发音为“CSharp”)牢固地植根于 C 和 C+语言族谱中,并且能很快被 C 和 C+程序员所熟悉。C#的目
30、标在于把Visual Basic 的高生产力和 C+语言的能力结合起来。Visual Studio 2008 的一部分提供给用户。本节对 C#语言从宏观方面进行简单地C#作为描述,以后的章节将会详细描述其使用方法。本节主要学习以下内容:C#简介C#与其他语言的比较面象的编程语言C#应用程序的编辑、编译和运行1.2.1 C#简介一直以来,C 和 C+是最有生命力的程序设计语言。这两种语言为程序员提供了丰富的功能、高度的灵活性和强大的底层控制能力,不过,因其强大所以也复杂,较之简单易学的VisualBasic 等语言,程序员较难驾驭。有过多种语言开发经验的程序员会明显感到为实现同样的功能使用C+就
31、要花费更长的开发周期。为了在开发能力和效率之间取得更好的平衡,人们改进开发出了许多语言以提高生产率,这其中最具有代表性的要属 C#程序语言。C#是一种完全面象的程序开发语言,它使得程序员能够在微软.NET上快速开发种类丰富的应用程序。由于其一流的面象的设计,从构建组件形式的商业对象到构造系统级应用程序,C#将是最合适的选择。不仅如此,C#在带来对应用程序的快速开发能力的同时,并没有牺牲 C 和C+的基本特征和强大的控制能力,它忠实地继承了C 和 C+的各种特性和优点,与 C 和 C+有着很大程度上的相似性,能为 C+程序员提供快捷的开发方式,熟悉 C 和 C+的开发通 C#。使用 C#开发应用
32、程序比使用 C+简单,在 C+中能完成的任务利用 C#也能完成,C#中与 C+很快就能精比较高级的功能等价的功能(如直接和处理系统内存),将在标记为“不安全”的代码中使用。(因为这个高级编程技术是非常的,它可能覆盖系统中重要的内存区,并最终导致严重的)C#只是.NET 开发中众多语言中的一种,但却是最值得的一种。因为它是唯一为.NETFramework 专门设计的语言,C#能使用.NET Framework 代码库提供的每种功能,而同是.NET员的 VB.NET 就做不到这一点。成C#语言的特点在.NET 运行库的支持下,.NET 框架的各种优点在 C#中表现得淋漓尽致。相信在以后的学习过你将
33、会深深体会到“Sharp” 的真正含义。简洁的语法在缺省的情况下,C#的代码在.NET 框架提供的“可操控”环境下运行,不允许直接进行内存操作,最大特色是没有了指针。同时还简化了 C+中的语法,使得 C+中的语法冗余现象,如各种各样的字符类型“const”、“#define”等被清除了出去。2精心地面象设计在 C#出现以前,C+把类嫁接到 C 上,因此,在 C+中进行面象的编程总是不太纯正。而C#的面象技术却已经成熟,且效率比较高。C#具有面象的语言所应有的一切特性:封装、继承与多态。通过精心地面象设计,从高级商业对象到系统级应用,C#是建造广泛组件的绝对选择。例如:在 C#的类型系统中,每种
34、类型都可以看作一个对象。C#提供了一个叫做装箱(boxing) 与拆箱(unboxing)的机制来完成这种操作,而不给使用者带来麻烦。C#只允许单继承,即一个类不会有多个基类,从而避免了类型定义的。C#中没有了全局函数,没有了全局变量,也没有了全局常数,一切的一切都必须封装在一个类之中,代码将具有更好的可读性,并且减少了发生命名3与 Web 紧密结合的可能。.NET 中的应用程序开发模型意味着越来越多的解决方案需要与 Web 标准相标记语言(HTML ,Hypertext Markup Language)和 XML。SOAP(简单对象,例如超文本协议) 的使用使得C#创建和Web 服务变得非常
35、简单,也就使得大规模次的分布式开发成为可能。4完全的安全性与错误处理首先,.NET 运行库提供了代码安全特性,它允许管理员和用户根据代码的 ID 来配置安全等级。在缺省情况下,从ernet 和ranet的代码都不允许任何本地文件和资源。例如,一个在网络上的共享目录中运行的程序,如果它要到本地硬盘上其他目录运行则一切正常。本地的一些资源,那么异被触发,若拷贝再有,内存管理中的收集机制减轻了开发对内存管理的负担。资源的与对象撤销时的内存工作将由.NET提供的收集器(GC,Garbage Collection)负责。这也有力地保障了程序的安全性。另外,C#中的变量也是是类型安全的。例如,不能使用未初
36、始化的变量;对象的成员变量由编译器负责将其置为零;(如:不能将整数指向5版本处理技术部变量初始化而被使用时,编译器将做出提醒;不支持不安全的指向类型)等。C#内置的版本控制功能可以减少开发费用,使开发更加轻易地开发和各种商业应用。例如函数重载必须被显式地6灵活性和兼容性,以及对接口和接口继承的支持等。在简化语法的同时,C#并没有失去灵活性(尽管它不是一种的语言,比如它不能用来开发硬件驱动程序,在默认的状态下没有指针等)。例如:如果需要使用指针、结构和静态数组,只需将某些类或者类的某些方法题。为非安全的,而且当你调用这些 “非安全”的代码时不会有其它的问1.2.3 编写 C#应用程序这一节,使用
37、传统的方法编辑、编译并运行一个 C#程序,它只包含一个类“o”,该类中只包含一个 Main()方法,该程序的运行结果是将一个字符串信息显示在屏幕上。示例 1.2.1 用记事本编写o.cs1用记事本(notepad)编辑工具创建源文件12345using System;namespaceoWorld1_1_1classopublic sic void Main()展名为.cs 的文件中,不能采用67记事本编辑工具默认的Console.Wriine(o World!);8“.txt”。91011图 1.2.2 修改 Path 变量值通过以上步骤的设置,即可用命令行工具编译和运行 C#程序,而对于安
38、装了 Visual studio 开发环境的用户,可以直接使用其中自带令行工具而无须以上环境设置。从开始菜单中选择“程序Visual studio 2008Visual Studio ToolsVisual Studio 2008 命令提示”。3编译并运行 C#程序C#源程序o.cs 建立完成后,接着需要将它编译成伪码(Pseudo code),o.cs 伪码并不是真正的机器码(machine code),它是一个中间码,该码遵循微软的中间语言 MSIL(ernediaanguage)语法,因此o.exe 程序代码必须在支持 MSIL 的行o.cs。上才能运行,.NET支持 MSIL,可以运先
39、用 C#编译器 csc.exe 编译o.cs,编译器的前两个字母“cs”代表 C Sharp,第 3 个字母“c”表示 Compiler 编译器的意思,在刚打开的 Visual Studio 2008 命令提示窗口中,切换到保存了源文件的目录,并输入下列命令:o.cs如图 1.2.3 所示。图 1.2.3 编译 C#源程序如果源程序无任何语法错误,将在当前目录产生一个可执行文件o.exe,它所包含的机器码是一个伪码,并非真正如el CPU 所规定的 80X86 指令码,只能在 Windows .NET下运行。执行该编译后的文件只需要在当前目录下输入“o”,如图 1.2.4 所示。图 1.2.4
40、 运行 C#程序1.2.4 分析第一个 C#程序C: cdc:work C:workcsco.cs 下面1对第一个 C#程序进行分析,请大家参考示例 1.2.1 中的代码。命名空间(namespace)大多数 C# 应用程序从若干个 using 指令开始。这些指令列出应用程序将会频繁使用空间,从而避免程序员在每次使用其中包含的方法时都要指定完全限定的名称。名例如,通过在程序开头包括行:using System; 程序员可以使用代码:Console.WriWorld!);ine(o,2. 使用命名空间来控制范围namespace 关键字用于一个命名空间。实际上就是给在此命名空间内的类等其他成员限
41、定了一个有效范围。随着编程经验的累积,发现在项目中创建范围的能力有助于组织代码,并可创建全局唯一的类型。在一个命名空间中,一般会一个或多个成员,这些成员的类型可以是:另一个命名空间、类、接口、结构、枚举、委托。当然,也可以将这些成员定义在命名空间之外,如果在 C# 源文件中没有显式命名空间,编译器都会添加一个默认名空间。该未命名名空间(有时称为全局命名空间)存在于每一个文件中。值得注意的一点是,命名空间隐式具有公共权,并且这是不可修改的。示例 1.2.2 namespace 关键字的作用。本示例在存在同名的类名Visual Studio 2008 中创建。通过本示例不难发现,尽管在同一个文件中
42、o 甚至是方法名fun,却因有了命名空间的限定而使他们不至于产生。123456789using System;using System.Collections.Generic; using System.Linq;using System.Text; namespace N1classopublic void fun()提示:示例 1.2.1 中了名空间oWorld1_1_1,它包含一个成员类o,而它本身又是全局命名空间的成员。事实上,不光能自定义命名空间,.NET Framework 就是使用命名空间来组织它的众多类的。提示:将示例 1.2.1 中的 using 指令去掉,编译器将会报出“当
43、前上下文中不存在名称 Console”的错误。这时可以通过将 Console.Wriine(o, World!);改为 System.Console.Wriine(o, World!);来解决问题。不过,请思考这种做法与使用using 指令相比会不利的地方?前面已经提到,命名空间也可以嵌套,如下所示:1011Console.Wriine(在 N1 命名空间); 12131415namespace N2 1617classo1819public void fun()2021Console.Wriine(在 N2 命名空间); 22232425namespace Namespace1_2_2 26
44、27class Program2829sic void Main(string args)30new N1.o().fun();new N2.o().fun(); 33343536运行结果如下所示:已经包含了o的定义 ”这样的错误呢?这是因为如果没有为两个同时叫做o 的类声明命名空间,他们将被添加到默认的全局命名空间,而相同作用域范围是不允许出现同名成员的。这样看来,编译器报错也就不奇怪了。上述程序等价于:3. 类和类的方法class 关键字用于名空间外,任何内容的一个类。至此已经写过两个 C#应用程序了,请从此处就记住 C#中除命都必须在某个类中完成,包括主函数 Main。至于类,在后续章节
45、中会有详细介绍,对它的理解和使用也是整本书的一个重点。4. 程序的输入和输出控制台应用程序的输入输出功能都是通过 Console 来完成的。Console 究竟是什么呢?它是在名字空间中 System 已经为定义好的一个类,它的具体实现对于程序员可以是透明的,只要使用它就可以了。示例 1.2.3 Console 的作用下面的代码中类 Console 为展现了两个最基本的方法 Wriine 和 ReadLine 。Console.ReadLine 表示接受标准输入设备(如键盘)的输入,Console.Wri备上(如屏幕)输出。ine 则用于往标准输出设实际上,用于输出的方法还有 Write ,与
46、 Wriine 的不同之处在于是否在输出后加一个换行。提示:在 C#程序中,程序的执行也同样是从 Main()方法开始的。一个程序中不允许两个以上的 Main()方法。对于了写 C 控制台程序的读者请牢记 C#中 Main()方法必须被包含在一个类中。1namespace N1 23namespace N2 4class Aclass B781namespace N1.N2 2class Aclass B 51234567891011using System;using System.Collections.Generic; using System.Linq;using System.Tex
47、t;namespace Console1_2_3class Programsic void Main(string args)Console.Wriine(请输入你的名字:);1213string name = Console.ReadLine();Console.Wriine(欢迎你,0!, name);14151617运行结果如下所示:185. 添加注释的方法应用程序并不是只要你自己一个人能看懂就够了,不管以前计算机老师或者是编程书籍是否已经告诫过,这里我还要再一次强调养成良好的代码注释的,这是一名优秀的程序员必备的条件之一,代码注释不会浪费您的编程时间,它只会提高您的编程效率,使您的程序
48、更加清晰、完整、友好。C#注释的方式和 C+没有区别,每一行中双斜杠“/”后面的内容,以及在分割符“/*”和“*/”之间的内容都将被编译器忽略。这样就可以采用“/”进行单行注释,采用“/*”和“*/”进行多行注释。让对示例 1.2.3 的程序加上注释。Visual Studio 2008 也提供了快捷方式。首先通过“视图工具如果需要多行代码,栏文本编辑器”将文本编辑器里的工具显示在上。然后选中代码并找到“注释”按钮即可实现快速注释多行。如需取消注释行,只需要选中代码,单击“取消注释”按钮。示例 1.2.4 给程序添加必要的注释语句/*作者:Debbie*时间:2010 年 1 月*/using
49、 System;/命名空间classosic void Main()Console.Wriine(o World);/向标准设备输出string name = Console.ReadLine();/name 变量中用户输入,并保存在Console.Wriine(e to you,0!,name);事实上,它就是一个占位符,程序运行时会用name变量的值替换这个占位符并最终输出到屏幕上。本节中已经学习如下主要内容:1 C# 是微软公司配合.NET象编程语言。是唯一为.NET而推出的一种全新的面Framework 专门设计的语言,能使用.NET Framework 代码库提供的每种功能。2C#与
50、.NET的其他编程语言兼容,可以用来开发.NET的所有应用程序类型。C#编译器文件是 csc.exe可以用任意的编辑工具编辑 C#程序的源文件,用 C#编译器 csc.exe 编译源文件为 MSIL(微软中间语言)代码,该中间代码只能运行于安装了 CLR(运行时)的环境。5. 使用 using 指令可以在代码中一个命名空间,主要作用是列出应用程序将会频繁使用名空间,从而避免这些命名空间下的类时需要提供完全限定名。6namespace 关键字用于的类型。一个命名空间,这样会有助于组织代码,并可创建全局唯一7class 关键字用于一个类。8Console 类为程序员提供了输入输出功能,它的具体实现
51、对程序员是透明的,这让程序员在使用屏幕和键盘之类的设备时变得非常轻松。1编写一个程序显示一个如下所示的菜单,并能够接受用户输入。用户输入完毕后,在屏幕上显示出用户的选择内容。(此程序暂时不需要对用户输入进行判断)。2在 DOS 命令行窗口中编译和运行这上题中的 C#程序。3 举例说明 namespace 关键字的作用。作业小结本章主要学习了以下内容:1.NET Framework.NET是推出的一个新的计算,.NET Framework 是该的,主要组件包括公共运行时(CLR)和基类库(FCL),基于.NET并运行于 CLR 环境下。2Visual Studio .NET开发的程序都编译成中间
52、代码(MSIL),Visual Studio .NET 是创建网络应用程序、桌面应用程序等的一套完整的开发工具,该开发工具继推出的 IDE 的所有优点,特别是为 Web 应用程序的开发和调试提供了一个前所未有的承了高效开发工具。 3C#编程语言 C#是一种完全面以用来开发.NET象的编程语言,其语法类似 Java 和 C+,与.NET支持的任何应用程序。的其他语言兼容,可本章小结.NET Framework 微软的一种计算Common Language Runtime CLR 公共语言运行时CommonLanguageSpecification CLS 通用语言规范Common Type Sy
53、stem CTS 公共类型系统eXtendedMarkupLanguage XML 可扩展标记语言Framework Class Library FCL Framework 基础类库Graphic Usererface GUI 图形用户界面Justime JIT 即时编译系统Managed Code 托管代码ermediaanguage MSIL 微软中间语言RaApplicationDevelopment t RAD 快速开发工具Simple Object Acs Protocol 专业术语 SOAP 简单对象协议Unmanaged Code 非托管代码WebServiDescription
54、Language WSDL Web 服务描述语言第二章 C#程序设计基础为读者介绍了 C#语言的主要特点和运行环境,并且创建和简要地介绍了第在本书第一部分一个简单的 C#应用程序。本章将会进一步深入 C#语言,除介绍 C#的数据类型系统、还将介绍 C#中的变量和常量,以及运算符表达式和程序结构的概念。通过本章的学习,可以达到以下目标:掌握 C#语言的数据类型的概念掌握 C#语言的变量和常量掌握 C#语言的运算符和表达式的概念掌握 C#语言的程序结构的概念本章目标2.1 数据类型与变量内容提要计算机程序所需的数据一般会放在中,而程序运行时的临时数据则放在器中。需要持久的数据硬盘之类的外部器器(内
55、存)中。了解计算机的人想必都知道计算机内存资源是非常保贵的资源,如果使用不当,对程序的影响是致命的,轻则运行缓慢,重则因内存溢出而宕机。如何才能让计算机合理分配内存呢?需要象现实生活中一样对数据进行分类,于是就有了数据类型的概念,根据数据类型就可以确定该数据应该分配多大内存了。当然,数据类型对于程序的意义绝非仅此一点。每一种高级语言都为开发提供一组数据类型,不同的语言提供的数据类型不尽相同。数据类型的概念有助于计算机了解采用哪种方式进行处理,需要多大的内存空间保存数据等等。其实,任何一个完整的程序都可以看成是一些数据和作用于这些数据上的操作的说明。本节主要学习以下内容:数据类型值类型类型 变量
56、与常量数据类型间的转换装箱与拆箱数据类型及分类数据类型及分类计算机程序所需的数据一般会放在中,而程序运行时的临时数据则放在器中。需要持久的数据硬盘之类的外部器器(内存)中。了解计算机的人想必都知道计算机内存资源是非常保贵的资源,如果使用不当,对程序的影响是致命的,轻则运行缓慢,重则因内存溢出而宕机。如何才能让计算机合理分配内存呢?首先回到生活中,考虑一下能干的是怎么挑选果盘的,盛西瓜、哈密瓜之类的大号水果可能会挑大号果盘,苹果、香梨之类则选用中号果盘,樱桃、草莓之类则用小号果盘足以。现在,你明白了吗?会根据水果的型号对水果进行分类从而确定所需果盘的大小。那么,计算机程序中是不是也可以借鉴呢?没
57、错,首先确定数据的数据类型,根据其数据类型就可确定其所需内存大小。比如说,一个人的应当是无符号整数,那么 2 个字节的空间就够了;国民生产总值(GDP)则应是一个浮点数,得要 4 个字节或是 8 个字节的内存空间。(当然,数据类型对于程序的意义绝非只是确定数据所需内存大小而已。)下面是,C#通用类型系统都有一些什么数据类型?通用类型系统支持两种一般类别的类型,这两大类型分别是值类型和些类别之间的关系。类型。在值类型和类型下又分为若干子类别。下图反映了这图 2.1.1 数据类型类别图在堆栈内存中,相反,类型则在另一个称为“堆”的内存区域中分配。区分值类型的内容他们有助于对程序性能的把握。栈内存中
58、的内容生存周期较短,变量只要一出作用域,内存就会回收。而堆内存中的内容则是由回收机制在确定不需要的情况下才回收,故类型需要的系统开销,但有利于类与类之间的数据共享。值类型与类型的另一个重要区别是,基于值类型的变量直接包含值,也就是说将一个值类型变量赋给另一个值类型变量时,将包含的值。这与类型变量的赋值不同,对象本身。类型变量的赋值只对对象的(可理解为内存地址),而不2变量的概念已经知道给特定数据分配的内存单元大小由数据类型决定,那么,下一个问题是,已分配的内存单元在程序中用什么来表示呢?是“变量”。没错,变量代表的就是特定的内存单元。事实上,变量与数据类型是两个分不开的概念。C#中一个变量的语
59、法是:语法:数据类型 变量名举例: i;/了一个整型变量,名字叫做 i3内置数据类型C# 是一种强类型语言。在变量中值之前,必须指定变量的类型。C#内置的类型关键字,均是 System 命名空间中的预定义类型的别名。下表是 C#中的内置数据类型及相关说明。类型类别C#数据类型对应类名类别说明取值范围byte8 位的无符号整数。Byte0 255 (0 28-1)sbyte8 位的有符号整数。SByte-128 127 (-27 27-1)short16 位的有符号整数。16-32,768 32,767(-215 215-1)32 位的有符号整数。32-2,147,483,648 2,147,4
60、83,647(-231 231-1)long64 位的有符号整数。64-9,223,372,036,854,775,808 9,223,372,036,854,775,807整数16 位无符号整数。ushortU160 . 65,535不符合 CLS。值类型u32 位无符号整数。U320 . 4,294,967,295不符合 CLS。ulong64 位无符号整数。U640 18,446,744,073,709,551,615 (0 264-1)float单精度(32 位)浮点数字。Single-3.402823e38 . 3.402823e38浮点double双精度(64 位)浮点数字。Dou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论