C#程序设计基础入门教程(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-06 10:19:51

点击下载

作者:传智播客高教产品研发部

出版社:职业教育出版分社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

C#程序设计基础入门教程

C#程序设计基础入门教程试读:

内容提要

C#作为微软的旗舰编程语言,深受程序员喜爱,是编写高效应用程序的首选语言。《C#程序设计基础入门教程》就是面向零基础的学生推出的一本入门书籍,本书从初学者角度,以通俗易懂的语言、丰富多彩的实例,详细讲解了使用C#语言进行程序开发时应该掌握的各种技术。

本书共9章:第1章至3章主要讲解C#的基础知识,包括.NET Framework、Visual Studio开发环境的搭建、变量与常量、表达式与运算符、选择结构语句、流程控制语句、数组、方法;第4章至第5章主要讲解面向对象的相关知识,包括面向对象的概念、类与对象的关系、this关键字和static关键字、索引器、继承、抽象类与接口、多态、异常等C#程序开发的核心内容;第6章主要讲解WinForm的基础知识,包括WinForm的文件结构、属性与事件、常用控件、登录案例、注册案例;第7章至第9章主要讲解C#的高级知识,包括字符串、日期、流与文件流、文件操作、泛型集合、非泛型集合,掌握这些知识可以让初学者在编写C#程序时得心应手。

本书配套丰富的教学资源,包括教学PPT、题库(2000道)、教学视频、源代码、教学补充案例、教学设计等资源。同时,为了帮助初学者及时地解决学习过程中遇到的问题,传智播客还专门提供了免费的在线答疑平台,并承诺在3小时内针对问题给予解答。

本书可作为高等院校本、专科计算机相关专业程序设计类课程教材。

序言

为什么出这本书

数年前,传智播客团队是一群默默工作在 IT 岗位的程序员,现如今,为了同一个梦想,我们聚集在一起,为“改变中国的 IT 教育”而全力以赴。为什么会有这样的梦想,大家先来听一听IT毕业生的心声:“我们专业的课程太枯燥了,太多理论方面的课程,并且这些理论听起来都是很难理解的,同学们学完了都是一头雾水。”“终于毕业了,学了几年的计算机课程,我们班上大部分同学都不知道能干什么,感觉好像什么都学了,但却什么都不会干!”“实习单位根本就不让我们干活,最多只是让我们阅读代码、修改文档,说我们什么都不会,不敢让我们参与实际工作。想想自己辛苦学了几年连实习的要求都达不到,心里很不是滋味。”“面试的时候,用人单位问能做什么,做过什么项目,我们回答不上来,面试过程中问到的很多问题,我们连听都没有听过。”

……

这些心声并不是个别毕业生所表达的,而是中国高校的一种普遍现象。高校的 IT 教育与企业的真实需求存在严重脱节,如果高校的相关课程仍不进行更新的话,毕业生将继续面临毕业即失业的困境。出现这样的困境主要原因在于教材更新速度缓慢,导致学生所学的知识与现在的社会需求严重不符,学校无法向学生传授企业需要的专业技能。面对高校所存在的问题,国务院近期提出了提高高等教育质量的改革要求,很庆幸,我们所做的事情就是配合高校完成教学改革。

传智播客作为一家专业的IT培训机构,一直将“改变中国的IT教育”作为自己的事业,并为此拼搏了9年。在这期间,传智播客默默耕耘,陆续出版了计算机书籍十几本、教学视频几十套、发表各类技术论文几百篇,直接培养的软件工程师就有2万多名,被传智播客影响的在校学生更是多达数百万人。毫不夸张地说,传智播客已经为 IT 学子开辟了一条全新的求知之路。

9年的沉淀让传智播客拥有了目前国内最好的IT培训课程。如今,传智播客决定把这套精品课程全部公开,印刷成书并输送至高校,解决眼下高校最急待解决的课程陈旧问题。另外,面向高校计算机专业的老师,传智播客还将提供免费的培训服务,让高校老师可以通过培训提高授课技能,将最专业、最实用的技能传授给学生。为了让广大师生在学习传智播客课程时能达到最好的效果,公司投入巨额资金,用于为高校师生提供以下学习配套资源与服务:

1.本书非常荣幸地落户于在线学习网站【“博学谷”:http://www.boxuegu.com】。大家都知道:“学习IT的人都在博学谷”,难道您真不知道?

2.在学习本书过程中,遇到任何问题,请找问答精灵,我们承诺工作时间 3 小时内解答您的问题。问答精灵的官方网址为:http://ask.boxuegu.com。读者可以通过扫描下面的二维码,下载问答精灵移动客户端或关注问答精灵微信公众平台。学习IT有问题就找问答精灵。问答精灵移动客户端问答精灵微信公众平台

3.我们为本书录制了全程教学视频,通过学习视频您可以更容易理解本书的知识,视频下载网址:http://dvd.boxuegu.com/net。

4.心中有疑问,想找老师面对面解惑?每周六晚上8点至10点,“面对面”讲堂,我们与您不见不散,网络公开课网址:http://openclass.boxuegu.com/net。

5.学习需要氛围,在校园快点组织起您的学习社团吧,只要申请通过,我们将免费给予社团各种支持,包括教材、视频教程、技术参考资料、技术面试资料、技术讲座、实习岗位等,优秀社团还可获得现金奖励。

学习社团报名网址:http://club.boxuegu.com。

6.本书配套源代码,下载网址:http://book.boxuegu.com/net。

7.针对高校教学,传智播客用近9年的教育培训经验,精心设计了“教材+教案+授课资源+考试系统+题库+教学辅助案例”一站式IT就业培训系列教程,方便老师进行教学,能够有效提高老师日常教学的效率。

如需索要配套教学资源,请关注博学谷高校老师俱乐部,扫描下方二维码关注微信公众平台。

希望通过我们的努力,在不久的将来,高校能够更多地培养出符合企业所需的实用型人才,IT学子们不再为就业而迷惘!高校老师俱乐部

关于本教材

作为一种技术的入门教程最重要也最难的一件事情就是要将一些非常复杂、难以理解的思想和问题简单化,让初学者能够轻松理解并快速掌握。本教材对每个知识点都进行了深入的分析,并针对每个知识点精心设计了相关案例,然后模拟这些知识点在实际工作中的运用,真正做到了知识的由浅入深、由易到难。为确保教材通俗易懂,在教材编写的过程中,我们还让600多名初学者参与到了教材试读中,对初学者反馈上来的难懂地方均作了一一修改。因此本书将是您接触到的技术书籍中最通俗易懂的一本。

本教材共分为9个章节,接下来分别对每个章节进行简单的介绍,具体如下。

第1章主要介绍C#程序开发的平台及其语言、C#开发环境的搭建,并且带领初学者开发一个最简单的HelloWorld程序,亲身体验C#语言的开发、运行过程。通过本章的学习,初学者能够对C#语言有一个整体的认识,并且可以熟练使用VS工具开发一个简单的程序。

第2、3章主要介绍C#编程基础知识,包括数据类型、常量、变量、方法、数组及其程序的调试。只有熟练掌握了C#中的基础知识,才能得心应手地学习后续章节。

第4、5章主要讲解面向对象的基本理论及思想,包括类与对象、构造方法、索引器、对象初始化器、继承、多态、抽象类、接口、异常、命名空间与程序集等。C#是一种面向对象的语言,深入理解面向对象的编程思想在学习C#语言的过程中尤为重要。

第6章主要介绍 WinForm 基础的相关知识,包括 WinForm 项目中的文件结构,常用WinForm控件的使用等。由于本章所讲解的内容侧重于实践操作,因此,建议初学者通过动手操作来加深对本章内容的理解。

第7章主要介绍C#中的常用类,包括String类、StringBuilder类、DateTime和Random类。熟练掌握这些常用类的使用,可以使初学者更好地开发C#程序。

第8章主要介绍C#中的流及其文件操作,包括文件流、File类、FileInfo类、Path类、对象的序列化与反序列化等。文件是存储数据最常用的一种媒介,只有熟练掌握了文件的相关操作,才能更好地完成数据的交互。

第9章主要介绍集合,包括ArrayList集合、Hashtable集合、泛型集合等。与数组相比,使用集合存储数据更加灵活,并且可以包含更高级的功能。

在学习本教材时,首先要做到对知识点理解透彻,其次一定要亲自动手去练习教材中所提供的案例,因为在学习软件编程的过程中动手实践是非常重要的。对于一些非常难以理解的知识点也可以选择通过案例的练习来学习,如果实在无法理解教材中所讲解的知识,建议初学者不要纠结于某一个知识点,可以先往后学习。通常来讲,看了后面一两个小节的内容后再回来学习之前不懂的知识点一般就都能理解了。

致谢

本教材的编写和整理工作由传智播客教育科技有限公司高教产品研发部完成,主要参与人员有徐文海、王春生、贡宗新、李允晶、高美云、陈欢、黄云、王龙、马丹,研发小组全体成员在这近一年的编写过程中付出了很多辛勤的汗水。另外,传智播客讲师马伦、牛亮亮、杨洪波、刘岐、汪磊、赵剑宇、王承伟、刘晓曲、栾博、许瑞航等人也参与了教材的部分编写和修订工作,除此之外,还有传智播客600多名学员也参与到了教材的试读工作中,他们站在初学者的角度对教材提供了许多宝贵的修改意见,在此一并表示衷心的感谢。

意见反馈

尽管我们尽了最大的努力,但教材中难免会有不妥之处,欢迎各界专家和读者朋友们来信来涵给予宝贵意见,我们将不胜感激。您在阅读本书时,如发现任何问题或有不认同之处可以通过电子邮件与我们取得联系。

请发送电子邮件至:itcast_book@vip.sina.com传智播客教育科技有限公司 高教产品研发部2014年6月于北京第1章C#开发入门

学习目标

◆ 认识.NET平台与C#语言

◆ 掌握C#开发环境的搭建

◆ 掌握HelloWorld程序的编写

对于初学者而言,学习任何一门语言都需要先认识它的运行平台。本书中所讲解的C#语言以及其编译和运行都依赖于.NET Framework 平台。通常来讲,开发人员会将 C#语言和.NET Framework平台一起使用,从而提高开发效率。本章作为本书的第1章,将针对.NET平台、C#语言以及开发环境的搭建进行详细的讲解。1.1.NET基础知识1.1.1 .NET Framework

.NET Framework是Microsoft为开发应用程序而创建的一个平台。使用.NET Framework 可以创建桌面应用程序、Web应用程序、Web服务和其他各种类型的应用程序。它是一个全新的、集成的、面向对象的开发平台,它以公共语言运行时(Common Language Runtime,简写CLR)为基础,支持多种编程语言。现在.NET Framework 最常用的版本有.NET4.0(Visual Studio 2010)、.NET4.5 (Visual Studio2012)和.NET4.5(Visual Studio2013)等。.NET Framework 自身的功能随着版本的不断升级而越来越丰富,正展现出诱人的前景。图1-1 .NET体系结构图

.NET Framework 主要由公共语言运行时(CLR)和.NET Framework 基础类库(Base Class Library,简称BCL)两部分组成。接下来通过一个图例来描述.NET Framework的基本结构,如图1-1所示。

从图 1-1 可以看出,.NET Framework 位于操作系统与应用程序之间,负责管理在.NET Framework上运行的各种应用程序。也就是说.NET应用程序不依赖于操作系统,只依赖于.NET Framework。.NET Framework底层是公共语言运行时(CLR),它可以支持多种编程语言。CLR的上一层是.NET Framework的基础类库(BCL),它提供了.NET程序开发中常用的类库。再上一层是Windows窗体、ASP.NET、ADO.NET等模块,它们用于开发各种各样的应用程序,如桌面应用程序、网络应用程序、企业级的应用程序等。其他的模块在.NET平台上广泛应用,在后续的课程中会进行详细讲解。

通过前面的讲解,初学者对.NET Framework 有了简单的了解,接下来对.NET Framework中的核心内容进行详细分析。

1. 公共语言运行时(CLR)

.NET Framework 的核心是它的执行环境,该环境称为公共语言运行时(CLR)或.NET运行时。公共语言运行时(CLR)主要负责管理.NET应用程序的编译、运行以及一些基础的服务,它为.NET应用程序提供了一个虚拟的运行环境。同时CLR还负责为应用程序提供内存分配、线程管理以及垃圾回收等服务,并且负责对代码实施安全检查,以保证代码的正常运行。

通常将在 CLR 控制下运行的代码称为托管代码(Managed Code),它是体现.NET Framework优点的关键。如在开发 C/C++程序时,需要手动管理和释放内存,而在开发 C#程序时,.NET Framework 会自动管理和释放内存,当然鱼和熊掌不可兼得,自动管理内存的特性会导致性能的降低。

2. 通用类型系统(CTS)

CLR有一个重要的组成部分,即通用类型系统(Common Type System,简称CTS)。各种主流语言都有自己的类型库,但它们的类型系统大体相似,.NET将各种不同编程语言的数据类型进行抽象,就有了 CTS。CTS 为.NET Framework 上的各种编程语言提供了支持,.NET Framework上不同的编程语言通过编译后都转换为CTS类型。例如Visual Basic.NET中定义的Integer数据类型被转换成了System.Int32数据类型,C#中的int类型也被转换成了System.Int32数据类型。这样,不同语言的变量就可以相互交换信息了,这就是.NET Framework支持混合语言编程的基本原理。

3. 公共语言规范(CLS)

公共语言规范(Common Language Specification,简称CLS)是CTS的子集,它的目的是让.NET 平台上编写的对象之间可以互相调用,实现语言的互操作性,例如在 Visual Basic.Net编写代码时可以对C#程序中的对象A进行操作。公共语言规范是一个标准集,.NET的编译器都必须支持它,CLS和CTS在一起确保语言的互操作性。

4. 中间语言(CIL)

中间语言(Common Intermediate Language,简称CIL)是C#程序第一次编译后生成的托管代码,它与处理器的指令集非常相似,所有在.NET平台上的编程语言都会被编译为CIL,中间语言为.NET的语言互操作性提供了支持。1.1.2 C#语言

C#是微软公司在 2000 年 6 月发布的一种全新的、简单的、安全的、面向对象的程序设计语言,是专门为.NET的应用而开发的语言。它吸收了C++、Visual Basic、Delphi、Java等语言的优点,体现了当今最新的程序设计技术的功能和精华。C#继承了C语言的语法风格,同时又继承了C++的面向对象特性。不同的是,C#的对象模型已经面向Internet进行了重新设计。

C#不再提供对指针类型的支持,使得程序不能随便访问内存地址空间,这使C#程序更加健壮。C#也不再支持多重继承,避免了以往类层次结构中由于多重继承带来的可怕后果。.NET Framework为C#提供了强大的、易用的、逻辑结构一致的程序设计环境。同时,公共语言运行时(CLR)为C#程序语言提供了一个托管的运行时环境,使程序比以往更加稳定、安全。

C#语言的特点可以概括为以下几点。

● 语言简洁。

● 语言的自由性。

● 保留了C++的强大功能。

● 强大的Web服务器控件。

● 支持跨平台。

● 与XML相融合。

需要注意的是,C#就其本身而言只是一种语言,尽管它是用于生成面向.NET Framework环境的代码,但它本身不是.NET 的一部分。1.2开发环境搭建

在使用C#语言开发程序之前,首先要在系统中搭建开发环境,本书将使用Visual Studio开发工具来作为开发环境,该工具可以使程序开发变得更加简单。本节重点讲解的就是 Visual Studio 2013开发工具的安装过程和使用。1.2.1 Visual Studio介绍

Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等。使用VS编写的代码适用于微软支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework等。

Visual Studio是目前最流行的Windows平台应用程序的集成开发环境,最新版本为 Visual Studio 2013,它基于.NET Framework4.5.1开发。接下来简单介绍常用的Visual Studio集成开发环境。

1.Visual Studio 2010

Visual Studio 2010集成了ASP.NET MVC 4,全面支持移动和HTML5,并且期待已久的工作流回来了,更棒的是,它的设计器已经支持C#表达式(之前只能用VB.NET)。

2.Visual Studio 2012

VS2012 支持.NET 4.5,和.NET 4.0 相比,.NET 4.5 更多的是完善和改进。.NET 4.5 也是Windows RT被提出来的首个框架库,.NET获得了和Windows API同等的待遇。Visnal Studio2012对系统资源的消耗并不大,不过需要Windows7/8的支持。

3.Visual Studio 2013

微软打破了Visual Studio两年升级一次的传统,Visual Studio 2012发布还不足一年,微软就发布了 Visual Studio 2013。Visual Studio 2013 新增了代码信息指示(Code Information Indicators)、团队工作室(Team Room)、身份识别、.NET内存转储分析仪、敏捷开发项目模板、Git支持以及更强力的单元测试支持。1.2.2 Visual Studio安装

上一节中主要介绍了VS的开发环境和版本,本书以Visual Studio 2013为例讲解如何安装VS开发环境,通过使用VS开发工具来进一步学习.NET。具体安装步骤如下。

1.开始安装

从微软的官网下载VS2013_RTM_ULT_CHS.iso镜像文件,在本地可以直接解压或者通过虚拟光驱来进行安装,解压后以管理员身份运行安装程序,此时显示Visual Studio界面,如图1-2所示。图1-2 Visual Studio界面图1-3 设置路径界面

图1-2所示的开始安装界面会停留一会儿,然后便会进入设置路径界面,如图1-3所示。

在图1-3中,程序的安装目录默认为C:\Program Files(x86)\Microsoft Visual Studio 12.0,点击安装目录后的浏览按钮,可以把Visual Studio开发工具安装到选定的目录,本书使用默认路径进行安装,选中【我同意许可条款和隐私策略】选项,开始安装程序。关于【加入Visual Studio体验改善计划及帮助改善Visual Studio的质量、可靠性和性能(可选)】选项,用户可以根据自己的需求来选择。

2. 选择安装组件

点击图1-3中的【下一步】按钮,进入安装组件选择界面,如图1-4所示。

如图 1-4 所示,界面中有一系列的安装组件,开发人员可以根据自己的需求来选择所要安装的组件,接下来对各个组件进行简单介绍。图1-4 组件选择界面

● Blendfor Visual Studio:提供了准确的设计图面和工具来帮助用户设计和生成美观精致的用户界面,可以直观地创建和编辑 Microsoft Windows 应用程序。

● LightSwitch:可以快速构建业务应用程序,让开发人员能够集中精力处理业务逻辑。

● 用于 C++的 Microsoft 基础类:常用的 C++的基础类库。

● Microsoft Office 开发人员工具:方便开发与Office相关的应用程序。

● Microsoft SQL Server Data Tools:为数据库开发人员提供了一个集成的环境,让它们可以在Visual Studio 内为任何 SQL Server 平台(无论是内部还是外部)执行所有数据库的设计工作。

● Microsoft Web 开发人员工具:方便Web开发人员开发Web相关的应用程序。

● Silverlight开发工具包:提供了灵活的编程模型,可以方便地集成到现有的网络应用程序中。

3. 等待安装

在图1-4所示的界面中选择【全选】按钮,将所有组件全部选中,然后点击【安装】按钮,程序就会自动进行安装,如图1-5所示。

4. 安装完成

Visual Studio安装完成后,会看到安装成功界面,如图1-6所示。图1-5 安装界面图1-6 安装成功界面1.2.3 Visual Studio启动过程

Visual Studio安装完成后,就可以启动Visual Studio软件了,首次启动Visual Studio会显示欢迎界面,如图1-7所示。

在图 1-7 中,如果点击【登录】按钮可以链接到在线开发者服务。在此点击“以后再说”超链接进入设置界面,如图1-8所示。图1-7 欢迎界面图1-8 设置界面

在图1-8所示的设置界面中,可以对Visual Studio环境进行“开发设置”,让开发者选择熟悉的编程语言进行程序开发,该选项提供了多种开发语言环境,具体如下。

● JavaScript:设置JavaScript语言的开发环境。

● SQL Server:设置SQL Server数据库的开发环境。

● Visual Basic:设置Visual Basic语言的开发环境。

● Visual C#:设置C#语言的开发环境。

● Visual C++:设置C++语言的开发环境。

● Visual F#:设置F#语言的开发环境。

● Web开发:设置Web开发环境。

● Web开发(仅代码):设置Web开发环境。

● 常规:设置多种编程语言进行开发的开发环境。

本书是针对C#语言进行讲解的,因此在界面的开发设置选项中选择“Visual C#”。然后再选择颜色主题,此处选择蓝色主题,点击【启动 Visual Studio(S)】按钮进入准备阶段,如图1-9所示。图1-9 准备阶段

由于是第一次启动Visual Studio软件,因此这个过程可能需要等待几分钟,当该阶段准备好了以后就会进入Visual Studio的起始页,如图1-10所示。图1-10 起始页

如图1-10所示的起始页中会显示Visual Studio的基本信息以及Visual Studio的新增功能等内容。1.2.4 Visual Studio主界面

使用Visual Studio工具进行程序开发,主要是在Visual Studio的主界面中进行的。主界面由标题栏、菜单栏、工具栏、代码编辑窗口、解决方案资源管理器、输出窗口、属性窗口等组成,具体如图1-11所示。图1-11 主界面

如图1-11所示的主界面中,有4个部分比较重要,具体说明如下。

● 代码编辑窗口:用于显示和编写代码。

● 解决方案资源管理器:用来显示项目文件的组成结构,如 Hello World 项目中有Properties、引用、App.config、Program.cs等。

● 输出窗口:用于显示项目中的一些警告和错误或者是程序运行时的输出信息、异常等。

● 属性窗口:用于显示当前操作文件的相关信息,如项目文件、项目文件夹等。1.3编写Hello World程序

通过上一小节的学习,初学者对Visual Studio开发工具有了一个基本的认识。为了快速熟悉工具的使用以及了解C#语言的特点,本小节将通过一个向控制台输出“Hello World!”的程序为初学者演示如何在VS工具下开发一个C#应用程序,具体实现步骤如下。

1. 新建项目

在Visual Studio菜单栏中选择【文件】→【新建】→【项目】,如图1-12所示。图1-12 新建项目菜单

点击图1-12中所示的【项目】菜单,此时会弹出新建项目窗口,在新建项目窗口中可以选择创建的项目类型,设置项目名称、位置、解决方案名称等,如图1-13所示。图1-13 新建项目窗口

图 1-13 中大致可以分为 4 个部分,在当前窗口最上面的区域是.NET Framework 版本的选择区域,左侧区域是模板区域,此区域可以选择要开发项目的模板,中间区域是项目区域,在该区域可以选择要创建项目的类型。在项目区域的下方,可以进行项目名称、位置(文件的保存位置)以及解决方案名称的设置,解决方案名称默认与项目名相同。

模板区域包含了项目开发中的多个模板,如Visual Basic、Visual C#、Visual C++、Visual F#等模板。由于本书是针对C#进行讲解的,本书中用到的只有Visual C#中的Windows模板,接下来针对Windows模板下的项目类型进行介绍。

● Windows窗体应用程序:用于创建具有Windows窗体界面的应用程序。

● WPF应用程序:用于创建Windows Presentation Foundation客户端应用程序。

● 控制台应用程序:用于创建具有命令行窗口的应用程序。

● 类库:用于创建C#类库项目。

● WPF浏览器应用程序:用于创建Windows Presentation Foundation浏览器应用程序。

● Window服务:用于创建Windows服务项目。

● WPF用户控件:用于创建Windows Presentation Foundation用户控件。

● WPF用户自定义控件:用于创建Windows Presentation Foundation用户控件。

● 空项目:用于创建应用程序的空项目。

● Windows窗体控件库:用于创建WinFrom应用程序中使用的控件。

在此,选择Windows模板中的“控制台应用程序”(运行结果会显示在命令行窗口中),然后将项目名称设置为“HelloWorld”,项目的位置为“D:\itcast”,并将解决方案的名称设置为“chapter01”,这样创建的程序文件就会生成在“D:\itcast\chapter01”目录中。

2.编写程序代码

在图1-13中设置好项目的相关信息后,点击【确定】按钮,进入程序编写的主界面,如图1-14所示。图1-14 程序编写主界面

从图1-14中可以看出,项目创建好之后就会自动生成一段程序代码,在这段代码中可以看到有一个“Main”单词,它所在的这一行代码就表示一个方法,在该方法中编写程序代码。而且Main()方法还是程序的主入口,程序执行时会从Main()方法开始执行。

为了让初学者对C#语言编程有一个简单了解,接下来使用Visual Studio开发工具来编写一个Hello World程序,具体如例1-1所示。

例1-1 Program.cs

1 using System;

2 using System.Collections.Generic;

3 using System.Linq;

4 using System.Text;

5 namespace HelloWorld

6 {

7 class Program

8 {

9  static void Main(string[] args)

10  {

11   Console.WriteLine("HelloWorld!"); //向控制台输出"HelloWorld!"

12   Console.ReadKey(); //用于获取用户输入的字符或功能键,在此用于暂停程序

13  }

14 }

15 }

接下来对该程序中的代码进行详细分析。

● 第1~4行代码:告诉编译器这个程序集引用的命名空间。

● 第5行代码:声明一个新命名空间,名称为“HelloWorld”,新命名空间从第6行大括号开始,一直到第15行大括号结束,这部分的内容都属于该命名空间的成员。

● 第7行代码:“class”是一个关键字,用于声明一个类。其中,class类型后面的“Program”就是新声明的类,代码第8~14行中两个大括号中间的成员都是这个类的成员。

● 第9行代码:定义了一个Main()方法,该方法是程序的入口。第10~13行大括号之间的内容是方法体,该方法体包含两条简单的语句,其中“Console.WriteLine("HelloWorld!");”用于向控制台输出内容,“Console.ReadKey();”用于暂停程序,当用户输入一个字符或功能键时,当前按下的键显示在控制台窗口中,程序继续执行。这两个语句后面使用“//”标注的信息是程序中的注释,这些注释信息可以增加程序的可读性。程序编译的过程中,注释会被忽略。

在编写程序时,需要特别注意的是,程序中出现的空格、括号、分号等符号必须采用英文半角格式,否则程序会出现编译错误。

3.运行程序

在Visual Studio中编写好代码以后,就可以点击工具栏中的【启动】按钮来运行程序,或者可以使用键盘上的快捷键F5运行程序,程序的运行结果如图1-15所示。图1-15 运行结果

至此,便完成了Hello World程序的编写以及运行过程。初学者在此只需有个大致印象即可,后面将会继续讲解如何使用Visual Studio编写程序。1.4运行原理

使用C#进行程序开发时,不仅要了解C#语言的特点,还需要了解C#程序的运行原理。接下来通过一个图来描述C#程序在.NET Framework中编译和运行的过程,如图1-16所示。图1-16 C#代码编译过程

在图1-16中,分为两个时期描述了程序的运行过程。首先是编译期,CLR对C#代码进行第一次编译,将编写的代码编译成.dll文件或.exe文件。此时代码被编译为中间语言。然后是运行期,CLR 会针对目前特定的硬件环境使用即时编译(JIT),也就是将中间语言编译成为本机代码并执行,把将编译过后的代码放入一个缓冲区中。下次使用相同的代码时,就直接从缓冲区调用。也就是说相同代码只编译一次,从而提高了程序运行的速度。1.5本章小结

本章首先讲解了什么是.NET平台及它和C#语言的关系,然后讲解了在Windows系统平台中 Visual Studio 2013 开发环境的安装,并演示了如何编写一个 C#程序,最后讲解了 C#程序在.NET平台的运行原理。通过本章的学习,初学者能够对.NET平台和C#语言有一个概念上的认识。对于C#程序的编写可以通过后面章节的学习逐渐掌握。1.6习题

一、填空题

1.C#代码进行第一次编译后会生成______文件或______文件。

2.C#程序的公共语言运行时简称为______。

3.C#程序在运行时,必须经过______和______两个阶段。

4.公共语言规范的目的是为了实现语言的______。

5.在C#中,用于向控制台输出信息的语句是______。

二、选择题

1..NET应用程序在运行时直接依赖于?

A.操作系统

B.Visual Studio 2013

C..NET Framework

D.C#

2.关于C#语言的特点描述,错误的是?

A.语言简洁

B.不支持跨平台

C.与XML相融合

D.具有面向对象的特点

3.下面哪种类型的文件可以在.NET Framework上直接运行?

A..java

B..cs

C..exe

D..txt

4.Visual Studio 2013中运行程序的快捷键是?

A.F5

B.F6

C.F10

D.F11

5.下列选项中,不属于公共语言运行时管理的是?

A.内存分配

B.线程管理

C.垃圾回收

D.处理异常

三、问答题

1.简述.NET平台的特点。

2.简述.NET平台与C#语言的关系。

四、编程题

使用Visual Studio 2013 开发工具编写一个控制台程序,要求在屏幕上输出一句话:“这是我的第一个C#程序!”。第2章C#编程基础(上)

学习目标

◆ 掌握C#的基本语法格式

◆ 掌握变量的定义与使用

◆ 掌握运算符的使用

◆ 掌握流程控制语句的使用

在第1章中讲解了.NET平台及C#运行环境等知识,并为大家演示了一个简单的Hello World程序。所谓“千里之行,始于足下”,学好C#基本语法是成功掌握C#语言非常重要的一步,因此在接下来的第2章中,将为大家详细地讲解C#语言的语法细则以及程序的流程控制。2.1C#的基本语法

每一种编程语言都有一套自己的语法规范,C#语言也不例外,同样需要遵从一定的语法规范,如代码的书写、标识符的定义、关键字的应用等。因此要学好C#语言,首先需要熟悉它的基本语法,接下来针对C#的基本语法进行详细的讲解。2.1.1 C#代码的基本格式

C#中编写程序时,代码都必须放在一个类的内部,在定义类时需要用到class关键字,class关键字前面可以加一些访问修饰符控制类的访问权限,定义类的具体语法格式如下。

[修饰符] class 类名

{

程序代码

}

在编写C#代码时,除了要遵从语法格式外,还需要特别注意以下几点。

1.C#中的程序代码可分为结构定义语句和功能执行语句,其中,结构定义语句用于声明一个类或方法,功能执行语句用于实现具体的功能。每条功能执行语句的最后都必须用分号(;)结束,如下面的语句。

Console.WriteLine("这是第一个C#程序!");

值得注意的是,在程序中不要将英文的分号(;)误写成中文的分号(;),如果写成中文的分号,编译器会报错。

2.C#语言是严格区分大小写的。在定义类时,不能将class写成Class,否则编译会报错。程序中定义一个computer的同时,还可以定义一个Computer。computer和Computer是两个完全不同的符号,在使用时务必注意。

3.在编写 C#代码时,为了便于阅读,通常会使用一种良好的格式进行排版,但这并不是必须的,我们也可以在两个单词或符号之间任意换行,例如下面这段代码的编排方式也是可以的。

public class HelloWorld

{public static void Main(string [] args)

{Console.WriteLine("这是第一个C#程序!");}}

虽然C#没有严格要求用什么样的格式来编排程序代码,但是考虑到代码的可读性,应该让自己编写的程序代码整齐美观、层次清晰,通常会使用下面这种形式。

public class HelloWorld

{

public static void Main(string[] args)

{

Console.WriteLine("这是第一个C#程序!");

}

}2.1.2 C#中的注释

在编写程序时,为了使代码易于阅读,通常会在实现功能的同时为代码加一些注释。注释是对程序中某个功能或者某行代码的解释、说明,在编译程序时编译器不会编译这些注释信息。

C#中的注释有3种类型,具体如下。

1.单行注释

单行注释通常用于对程序中的某一行代码进行解释,用符号“//”表示,“//”后面为被注释的内容,具体示例如下。

int c = 10; //定义一个整型变量

2.多行注释

多行注释就是注释中的内容可以为多行,它以符号“/*”开头,以符号“*/”结尾,具体示例如下。

/* int c = 10;

int x = 5; */

3.文档注释

文档注释用于对类或方法进行说明和描述。在类或方法前面连续输入 3 个“/”,就会自动生成相应的文档注释,用户需要手动填写类或方法的描述信息,来完成文档注释的内容。

脚下留心

在C#中,有的注释可以嵌套使用,有的则不可以,下面列出两种具体的情况。(1)多行注释“/*…*/”中可以嵌套单行注释“//”,举例如下。

/* int c = 10; //定义一个整型的c

int x = 5; */(2)多行注释“/*…*/”中不可以嵌套多行注释“/*…*/”,举例如下。

/*

/*int c = 10;*/

int x=5;

*/

上面的代码无法通过编译,原因在于第一个“/*”会和第一个“*/”进行配对,而第二个“*/”则找不到匹配对象。2.1.3 C#中的标识符

在编程过程中,经常需要在程序中定义一些符号来标记一些名称,如类名、方法名、参数名、变量名等,这些符号被称为标识符。标识符可以由任意顺序的大小写字母、数字、下画线(_)和@符号组成,但标识符不能以数字开头,且不能是C#中的关键字。

下面的这些标识符都是合法的。

username

username123

user_name

_userName

注意,下面的这些标识符都是不合法的。

123username

class

98.3

Hello World

在C#程序中定义的标识符必须要严格遵守上面的规范,否则程序在编译时会报错。除此之外,为了增强代码的可读性,建议初学者在定义标识符时还应该遵循以下规范。

1.类名、方法名和属性名中的每个单词的首字母要大写。例如 ArrayList、LineNumber、Age。这种命名方式被称为大驼峰命名法或帕斯卡(Pascal)命名法。

2.字段名、变量名的首字母要小写,之后的每个单词的首字母均为大写。例如age、userName。这种命名方式被称为小驼峰命名法。

3.常量名中的所有字母都大写,单词之间用下画线连接。例如DAY_OF_MONTH。

4.在程序中,应该尽量使用有意义的英文单词来定义标识符,使得程序便于阅读。例如使用userName表示用户名,password表示密码。2.1.4 C#中的关键字

关键字是编程语言里事先定义好并赋予了特殊含义的单词,也称作保留字。和其他语言一样,C#中保留了许多关键字,例如class、public等,下面列举的是C#中所有的关键字。

abstract as  base  bool  break byte  case

catch  char  checked class  const continue decimal

default delegate do  double else  enum  event

explicit extern false finally float for  foreach

goto  if  implicit in  int  interface internal

is   lock  long  namespace new  null  object

operator out  override params private protected public

readonly ref  return sbyte  sealed short  sizeof

stackalloc static string struct switch this  throw

true  try  typeof uint  ulong unchecked unsafe

ushort  using virtual void  volatile while

上面列举的关键字中,每个关键字都有特殊的作用,例如 namespace 关键字用于声明命名空间,using 关键字用于引入命名空间,class 关键字用于声明一个类。在本教材后面的章节中将逐步对其他关键字进行讲解,在此没有必要对所有关键字进行记忆,只需要了解即可。

值得一提的是,在使用C#关键字时,需要注意以下两点。

● 所有的关键字都是小写的。

● 程序中的标识符不能以关键字命名。2.1.5C#中的常量

常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符'a'、浮点数3.2等。在C#中,常量包括整型常量、浮点数常量、布尔常量、字符常量等。接下来对这些常量进行详细讲解。

1.整型常量

整型常量是整数类型的数据,有二进制、八进制、十进制和十六进制4种表示形式,具体如下。

● 二进制:由数字0 和1 组成的数字序列,如01000000、10000001。

● 八进制:以0开头并且其后由0~7(包括0和7)的整数组成的数字序列,如0342。

● 十进制:由数字0~9(包括0和9)的整数组成的数字序列,如198。

● 十六进制:以0x或者0X开头并且其后由0~9、A~F(包括0和9、A和F)组成的数字序列,如0x25AF。

需要注意的是,在程序中为了标明不同的进制,数据都有特定的标识,八进制必须以0开头,如0711、0123;十六进制必须以0x或0X开头,如0xaf3、0Xff;整数以十进制表示时,第一位不能是0,0本身除外。例如十进制的127,用二进制表示为01111111,用八进制表示为0177,用十六进制表示为0x7F或者0X7F。

2.浮点数常量

浮点数常量就是在数学中用到的小数,分为float单精度浮点数和double双精度浮点数两种类型。其中,单精度浮点数后面以F或f结尾,而双精度浮点数则以D或d结尾。当然,在使用浮点数时也可以在结尾处不加任何的后缀,此时虚拟机会默认为double双精度浮点数。浮点数常量还可以通过指数形式来表示,具体示例如下。

2e3f 3.6d 0f 3.84d 5.022e+23f

上面列出的浮点数常量中用到了e和f,初学者可能会感到困惑,在后面的2.2.2小节中将会详细介绍。

3.字符常量

字符常量用于表示一个字符,一个字符常量要用一对英文半角格式的单引号('')引起来,它可以是英文字母、数字、标点符号以及由转义序列来表示的特殊字符。具体示例如下。

'a' '1' '&' '\r' '\u0000'

上面的示例中,'\u0000'表示一个空白字符,即在单引号之间只有一个表示空白的空格。之所以能这样表示是因为C#采用的是Unicode字符集,Unicode字符以\u开头,空格字符在Unicode码表中对应的值为'\u0000'。

4.字符串常量

字符串常量用于表示一串连续的字符,一个字符串常量要用一对英文半角格式的双引号("")引起来,具体示例如下。

"HelloWorld" "123" "Welcome \n XXX" ""

一个字符串可以包含一个字符或多个字符,也可以不包含任何字符,即长度为零。

5.布尔常量

布尔常量即布尔型的true和false两个值,该常量用于区分一个事物的真与假。

6.null常量

null常量只有一个值null,表示对象的引用为空。关于null常量将会在第4章中详细介绍。

多学一招:特殊字符——反斜杠(\)

在字符常量中,反斜杠(\)是一个特殊的字符,被称为转义字符,它的作用是用来转义后面一个字符。转义后的字符通常用于表示一个不可见的字符或具有特殊含义的字符,例如换行\n。下面列出一些常见的转义字符。

● \r 表示回车,将光标定位到当前行的开头,不会跳到下一行。

● \n 表示换行,换到下一行的开头。

● \t 表示制表符,将光标移到下一个制表符的位置,就像在文档中用Tab键一样。

● \b 表示退格符号,就像键盘上的Backspace键。

以下的字符都有特殊意义,无法直接表示,所以用斜杠加上另外一个字符来表示。

● \' 表示单引号字符,C#代码中单引号表示字符的开始和结束,如果直接写单引号字符('),程序会认为前两个是一对,会报错,因此需要使用转义(\')。

● \"表示双引号字符,C#代码中双引号表示字符串的开始和结束,包含在字符串中的双引号需要转义,比如"hesays,\"thank you\"."。

● \\ 表示反斜杠字符,由于在 C#代码中的\是转义字符,因此需要表示字面意义上的\,就需要使用\\。

多学一招:进制间的转换

通过前面的介绍可以知道,进制数可以分为二进制、八进制、十进制和十六进制,不同的进制并不影响数据本身,因此数据可以在不同进制之间转换,具体转换方式如下。

一、十进制和二进制之间的转换

1.十进制转二进制

十进制转换成二进制就是一个数除以 2 取余数的过程。把要转换的数,除以 2,得到商和余数,将商继续除以2,直到商为0。最后将所有余数倒序排列,得到的数就是转换结果。

以十进制的6转换为二进制为例进行说明,如图2-1所示。图2-1 十进制转二进制

三次除以2计算得到余数依次是0、1、1,将所有余数倒序排列是1、1、0。所以十进制的6转换成二进制数,结果是110。

2.二进制转十进制

二进制转化成十进制要从右到左用二进制位上的每个数去乘以2的相应次方,例如将最右边第一位的数乘以2的0次方,第二位的数乘以2的1次方,第n位的数乘以2的n-1次方,然后把所有乘的结果相加,得到的结果就是转换后的十进制数。

如把一个二进制数01100100转换为10进制,转换方式如下。0123456

0 * 2 + 0 * 2 + 1 * 2 + 0 * 2 + 0 * 2 + 1 * 2 + 1 * 2 + 0 * 72 = 100

由于0乘以多少都是0,所以上述表达式也可以简写为如下方式。256

1 * 2 + 1 * 2 + 1 * 2 = 100

得到的结果100就是二进制数01100100转化后的十进制数。

二、二进制和八进制、十六进制之间的转换

编程中之所以要用八进制和十六进制,是因为它们与二进制之间的互相转换很方便,而且它们比一串长的二进制数方便书写和记忆。接下来就为大家详细讲解如何将二进制转为八进制、十六进制。

1.二进制转八进制

二进制转八进制时,首先需要将二进制数自右向左每三位分成一段,然后将二进制的每段的三位数转为八进制的一位,转换过程中数值的对应关系如表2-1所示。表2-1 二进制和八进制数值对应表

了解了二进制转八进制的规则,接下来详细讲解如何将一个二进制数100101010转为八进制数,具体步骤如下。(1)每三位分成一段,结果为100 101 010。(2)将每段的数值分别查表替换,结果如下。

100→4

101→5

010→2(3)将替换的结果进行组合,转换的结果为0452(注意八进制必须以0开头)。

2.二进制转十六进制

将二进制转十六进制时,与转八进制类似,不同的是要将二进制数每四位分成一段,查表转换即可。二进制转十六进制过程中数值的对应关系如表2-2所示。表2-2 二进制和十六进制数值对应表

了解了二进制转十六进制的规则,接下来通过一个例子来学习一下。假设要将一个二进制数101001010110转为十六进制数,具体步骤如下。(1) 每四位分成一段,结果为101001010110。(2) 将每段的数值分别查表替换,结果如下。

1010→A

0101→5

0110→6(3) 将替换的结果进行组合,转换的结果为 0xA56 或 0XA56(注意十六进制必须以 0x 或者0X开头)。2.2C#中的变量2.2.1 变量的定义

在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元我们称之为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。

接下来通过具体的代码来学习变量的定义。

int x = 0,y;

y = x+3;

上面的代码中,第一行代码的作用是定义了两个变量 x 和 y,也就相当于分配了两块内存单元,在定义变量的同时为变量x分配了一个初始值0,而变量y没有分配初始值,变量x和y在内存中的状态如图2-2所示。

第二行代码的作用是为变量赋值,在执行第二行代码时,程序首先取出变量 x 的值,与 3相加后,将结果赋值给变量y,此时变量x和y在内存中的状态发生了变化,如图2-3所示。图2-2 x、y 变量在内存中的状态图2-3 x、y 变量在内存中的状态

从图2-2、图2-3以及上面的描述中不难发现,变量实际上就是一个临时存放数据的地方。在程序中,可以将指定的数据存放到变量中,方便随时取出来再次进行使用。变量对于一段程序的运行是至关重要的,初学者在后续的学习中会逐步地了解变量的作用。2.2.2 变量的数据类型

C#是一门强类型的编程语言,它对变量的数据类型有严格的限定。在定义变量时必须声明变量的类型,在为变量赋值时必须赋予和变量同一种类型的值,否则程序会报错。

在C#中,变量的数据类型可分为两大类,即值类型和引用类型。这两大类又分为很多数据类型,具体如图2-4所示。图2-4 数据类型

下面针对图 2-4 中所示的数值型、字符型和布尔型进行详细讲解。对于值类型中的其他类型以及引用类型,由于比较复杂,在这里讲解初学者无法理解,因此放到后面的章节中再做讲解。

1.整数类型变量

整数类型变量用来存储整数数值,即没有小数部分的值。在C#中,为了给不同取值范围的整数合理地分配存储空间,整数类型分为 4 种不同的类型:字节型(byte)、短整型(short)、整型(int)和长整型(long),4种类型所占存储空间的大小以及取值范围如表2-3所示。表2-3 整数类型

表2-3中,列出了4种整数类型变量所占的空间大小和取值范围。其中,占用空间指的是不同类型的变量分别占用的内存大小,如一个int类型的变量会占用4字节大小的内存空间。取值范围是变量存储的7值不能超出的范围,如一个byte类型的变量存储的值必须是-2 ~ 2 7 -1的整数。

在为一个long类型的变量赋值时需要注意一点,所赋值的后面要加上一个字母“L”(或小写“l”),说明赋值为long类型。如果赋的值未超出int型的取值范围,则可以省略字母“L”(或小写“l”)。具

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载