C#完全自学教程

978-7-115-57248-6
作者: 明日科技
译者:
编辑: 赵祥妮
分类: C#

图书目录:

详情

本书从初学者角度出发,通过通俗易懂的语言和大量生动典型的实例,由浅入深、循序渐进地介绍使用C#进行 WinForms 程序开发的常用技术和方法。全书共 16 章,包括搭建 C#开发环境、第一个 C#程序、数据类型、运算符、条件语句、循环语句、数组、字符串、面向对象编程基础、面向对象编程进阶、Windows 窗体编程、Windows 控件的使用、数据库基础、使用 C#操作数据库、文件及文件夹操作、库存管理系统等内容。 本书附有配套资源包。配套资源包提供了书中所有实例和项目的源代码,全部源代码都经过精心调试,在 Windows 7/Windows 10 等操作系统下均能够正常运行;另外还提供了全程视频讲解,读者可以边看边学,以提高学习效率。 本书适用于 C#初中级用户,也可作为大中专院校相关专业和培训机构的教材。对于程序开发爱好者,本书也有非常高的参考价值。

图书摘要

版权信息

书名:C#完全自学教程

ISBN:978-7-115-57248-6

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    明日科技

责任编辑 赵祥妮

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e57248”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。

内容提要

本书从初学者角度出发,通过通俗易懂的语言和大量生动典型的实例,由浅入深、循序渐进地介绍使用C#进行WinForms程序设计的常用技术和方法。全书共16章,包括搭建C#开发环境、第一个C#程序、数据类型、运算符、条件语句、循环语句、数组、字符串、面向对象编程基础、面向对象编程进阶、Windows窗体编程、Windows控件的使用、数据库基础、使用C#操作数据库、文件及文件夹操作、库存管理系统等内容。

本书附有配套资源包。配套资源包提供了书中所有实例和项目的源代码,全部源代码都经过精心调试,在Windows 7/Windows 10等操作系统下均能够正常运行;另外,还提供了全程视频讲解,读者可以边看边学,以提高学习效率。

本书适用于C#初、中级用户,也可作为大中专院校相关专业和培训机构的教材。对于程序设计爱好者,本书也有非常高的参考价值。

前  言

C#是微软公司为Visual Studio开发平台推出的一种高级编程语言。该语言支持多种类型的应用程序设计,包括控制台应用程序、WinForms应用程序和ASP.NET应用程序等。C#语言是一种简洁、类型安全的面向对象编程语言,是程序设计人员使用的主流编程语言之一。

本书内容

本书共分16章,包括C#语言基础、窗体应用开发知识讲解、数据库相关操作、文件相关操作,以及实际的项目实例。具体内容分别为搭建C#开发环境、第一个C#程序、数据类型、运算符、条件语句、循环语句、数组、字符串、面向对象编程基础、面向对象编程进阶、Windows窗体编程、Windows控件的使用、数据库基础、使用C#操作数据库、文件及文件夹操作、库存管理系统。

本书资源

为方便读者自学本书,本书配套资源包中提供了全程的视频讲解,还提供了所有项目和实例的源代码,可以帮助读者轻松学习C#编程。

本书特点

(1)结构合理,符合自学要求。

所讲内容既避开了艰涩难懂的理论知识,又覆盖了编程所需的各方面技术,其中一些知识在同类书中鲜有提及,但又非常实用。关于目前的热点技术与应用,本书也进行了介绍。

(2)循序渐进、轻松上手。

本书内容叙述从零起步,循序渐进,可全面提高读者的学、练、用能力。讲解过程中使用了大量生动、实用的实例,读者可以轻松上手,快速掌握所学内容。

(3)实例经典,贴近实际。

本书介绍的内容和实例多数来源于实际开发,实践性非常强,也非常经典,只需做少量修改甚至不做修改,即可用于实际项目开发。第16章通过一个完整的综合项目,全面介绍WinForms的业务过程和技术,实例讲解力求步骤详尽、清晰流畅。本书所选实例突出实用性,注重培养读者利用C#解决实际问题的能力。

(4)学练结合,巩固知识。

本书第2~15章的后面都提供了课后测试和上机实战两个板块,帮助读者巩固每章所学知识,并提升编程水平。

本书适用读者

初学编程的自学者            编程爱好者

大中专院校相关专业的老师和学生  相关培训机构的老师和学员

做毕业设计的学生            初、中级程序设计人员

各级程序维护及管理人员        参加实习的初级程序员

技术支持

本书由明日科技C#团队组织编写,参加编写的有王小科、高春艳、赛奎春、王国辉、申小琦、赵宁、何平、张鑫、周佳星、李菁菁、李磊、冯春龙、庞凤、谭畅、刘媛媛、胡冬、宋磊、张宝华、杨柳等。由于作者水平有限,不妥之处在所难免,请广大读者批评指正。

如果读者在使用本书时遇到问题,可以访问明日科技的官方网站,我们将为读者提供服务和支持。读者使用本书过程中发现的错误和遇到的问题,我们承诺在1~5个工作日内给予回复。

服务网站:www.mingrisoft.com

服务邮箱:mingrisoft@mingrisoft.com

服务电话:0431-84978981/84978982

服务QQ:4006751066

祝愿读书愉快!

明日科技

2022年6月

第1章 搭建C#开发环境

视频教学:49分钟

C#是一种面向对象的编程语言,主要用于开发可以在.NET平台上运行的应用程序。C#的语言体系都构建在.NET Framework上。近几年,C#的使用人数呈现上升趋势,这也正说明了C#语言的简单、现代、面向对象和类型安全等特点正在被更多人认同。而在TIOBE编程语言排行榜上,C#语言也常年排行前列。本章将对如何搭建并熟悉C#的开发环境进行详细讲解。

1.1 C#概述

扫码看视频

1.1.1 C#语言及其特点

C#是由微软公司的安德斯海尔斯伯格设计的一种编程语言,是从C/C++派生来的一种简单、现代、面向对象和类型安全的编程语言,并且能够与.NET Framework完美结合。C#语言具有以下特点。

(1)语法简洁,不允许直接操作内存,去掉了指针操作。

(2)彻底地面向对象,具有面向对象语言应有的一切特性,如封装、继承和多态等。

(3)与Web紧密结合,支持绝大多数的Web标准,如HTML、XML、SOAP等。

(4)强大的安全性机制,可以消除软件开发中常见的错误(如语法错误)。.NET提供的垃圾回收器能够帮助开发者有效地管理内存资源。

(5)兼容性好,遵循.NET的公共语言规范(CLS),能够与其他语言开发的组件兼容。

(6)灵活的版本处理技术,本身内置了版本控制功能,开发人员能够更加容易地开发和维护。

(7)完善的错误、异常处理机制,使程序在交付应用时更加健壮。

1.1.2 认识.NET Framework

.NET Framework是微软公司推出的完全面向对象的软件开发与运行平台。.NET Framework 有两个主要组件:公共语言运行时(Common Language Runtime,CLR)和类库。

公共语言运行时。公共语言运行时负责管理和执行由.NET编译器编译产生的中间语言代码,.NET程序执行原理如图1.1所示。公共语言运行时解决了传统编译语言的一些致命缺点,如垃圾内存回收、安全性检查等。

图1.1 .NET程序执行原理

类库。类库就好比一个装满了工具的大仓库。类库里有很多现成的类,这些类可以拿来直接使用,例如进行文件操作时,可以直接使用类库里的IO类。

1.1.3 C#与.NET Framework

.NET Framework是微软公司推出的一个编程平台。C#是专门为.NET Framework而设计的。.NET Framework是一个功能非常丰富的平台,可开发、部署和执行分布式应用程序。C#就其本身而言只是一种编程语言,尽管它是用于生成面向.NET环境的代码,但它本身不是.NET的一部分。.NET支持的一些特性,C#并不支持;而C#语言支持的某些特性,.NET也不支持(如运算符重载)。在安装Visual Studio 2017时,.NET Framework 4.7也会被安装到本地计算机中。

1.1.4 C#的应用领域

在当前的主流开发语言中,C/C++一般用于底层和桌面程序;PHP等一般只用于Web开发;而C#几乎可用于所有领域,如它可以在嵌入式、便携式计算机、电视、手机和大量其他设备上运行。C#的应用领域主要包括以下几个。

游戏软件开发。

桌面应用系统开发。

交互式系统开发。

智能手机程序设计。

多媒体系统开发。

网络系统开发。

丰富互联网应用程序(RIA)(如Silverlight)开发。

操作系统开发。

Web应用开发。

C#无处不在,它可应用于任何地方、任何领域。如果仔细观察,你就会发现C#就在我们身边。例如,视频播放软件PPTV桌面版、58同城官方网站等项目都是使用C#编写的。

1.2 Visual Studio 2019的下载及安装

扫码看视频

Visual Studio 2019是微软公司为了配合.NET Framework推出的集成开发环境(IDE)。本节将对Visual Studio 2019的安装与卸载进行详细讲解。

1.2.1 安装Visual Studio 2019的必备条件

在安装之前,要了解安装Visual Studio 2019的必备条件,检查计算机的软硬件配置是否满足Visual Studio 2019开发环境的安装要求。具体的条件和要求如表1.1所示。

表1.1 安装Visual Studio 2019的必备条件

名称

说明

处理器

2.0 GHz双核处理器,建议使用四核处理器

内存

4GB,建议使用8GB内存

可用硬盘空间

系统盘上最少需要10GB的可用空间

操作系统及所需补丁

Windows 7(SP1)、Windows 8、Windows 8.1、Windows Server 2008 R2 SP1(x64)、Windows Server 2012(x64)、Windows 10

1.2.2 下载Visual Studio 2019

这里以Visual Studio 2019社区版为例讲解具体的下载及安装步骤,可前往微软官方网站下载该版本安装文件。图1.2所示的是下载页面,因版本更新,可能会与实际情况不同。

图1.2 Visual Studio 2019下载页面

1.2.3 安装Visual Studio 2019

安装Visual Studio 2019社区版的步骤如下。

(1)Visual Studio 2019社区版的安装文件是“.exe”可执行文件,其命名格式为“vs_community__编译版本号.exe”。此处下载的安装文件为vs_community__1134461564.1562133409.exe,双击该文件开始安装。

说明

安装Visual Studio 2019开发环境时,要求计算机上必须安装了.NET Framework 4.6或更高版本。如果没有安装,请先到微软公司官方网站下载并安装。

(2)跳转到图1.3所示的Visual Studio 2019安装界面,在该界面中单击“继续”按钮。

图1.3 Visual Studio 2019安装界面

(3)程序加载完成后,将自动跳转到安装选择项界面,如图1.4所示。在该界面中将“.NET桌面开发”和“ASP.NET和Web开发”这两个复选框选中,读者可以根据自己的开发需要确定是否选中其他的复选框。选择完要安装的功能后,在下面“位置”处选择要安装的路径,建议不要安装在系统盘上,可以选择一个其他磁盘进行安装。设置完成后,单击“安装”按钮。

图1.4 安装选择项界面

注意

在安装Visual Studio 2019开发环境时,一定要确保计算机处于联网状态,否则无法正常安装。

(4)跳转到图1.5所示的安装进度界面,该界面显示了当前的下载及安装进度。

图1.5 安装进度界面

(5)安装完成后,即可在系统的开始菜单中选择“Visual Studio 2019”启动该开发环境,如图1.6所示。

图1.6 选择“Visual Studio 2019”

如果是第一次启动Visual Studio 2019,会出现图1.7所示的提示框。直接单击“以后再说。”超链接,即可进入Visual Studio 2019开发环境的开始界面,如图1.8所示。

图1.7 初次启动Visual Studio 2019出现的提示框

图1.8 Visual Studio 2019开始界面

1.2.4 卸载Visual Studio 2019

如果要卸载Visual Studio 2019,可以按以下步骤进行。

(1)在Windows 10操作系统中,选择“控制面板”→“程序”→“程序和功能”,在打开的窗口中选中“Visual Studio Community 2019”,单击“卸载”按钮,如图1.9所示。

图1.9 卸载程序

(2)进入Visual Studio 2019卸载页面,如图1.10所示。单击“Uninstall”按钮,即可卸载Visual Studio 2019。

图1.10 Visual Studio 2019卸载页面

1.3 熟悉Visual Studio 2019开发环境

扫码看视频

本节对Visual Studio 2019中的菜单栏、工具栏、解决方案资源管理器、“工具箱”窗口、“属性”窗口、“错误列表”窗口等进行介绍。

1.3.1 创建控制台应用程序

初期学习C#语言和面向对象编程主要在Windows操作系统的控制台应用程序环境下完成,下面将介绍控制台应用程序的创建过程。

(1)选择“开始”→“所有程序”→“Visual Studio 2019”,进入Visual Studio 2019开发环境开始界面,选择“创建新项目”选项,如图1.11所示。

图1.11 选择“创建新项目”选项

(2)进入“创建新项目”界面,在右侧选择“控制台应用(.NET Framework)”,单击“下一步”按钮,如图1.12所示。

图1.12 “创建新项目”界面

说明

在图1.12所示的界面中选择“Windows窗体应用(.NET Framework)”,即可创建Windows窗体应用程序。

(3)进入“配置新项目”界面,在该界面中输入控制台应用程序名称,并选择程序保存路径和使用的.NET Framework版本,然后单击“创建”按钮,即可创建一个控制台应用程序,如图1.13所示。

图1.13 “配置新项目”界面

1.3.2 菜单栏

菜单栏显示了所有可用的Visual Studio 2019菜单,除了“文件”“编辑”“视图”“窗口”“帮助”菜单之外,还提供了编程专用的功能菜单,如“项目”“生成”“调试”“工具”“测试”等,如图1.14所示。

图1.14 Visual Studio 2019菜单栏

每个菜单中都包含若干个菜单命令,用于执行不同的操作。例如,“调试”菜单中包括调试程序的各种命令,如“开始调试”“开始执行(不调试)”“新建断点”等,如图1.15所示。

图1.15 “调试”菜单

1.3.3 工具栏

为了使操作更方便快捷,菜单中常用的命令按功能分组并分别放入相应的工具栏中。通过工具栏,用户可以快速地访问常用的菜单命令。常用的工具栏有标准工具栏和调试工具栏,下面分别介绍。

(1)标准工具栏包括大多数常用的命令按钮,如“新建项目”“打开文件”“保存”“全部保存”等,如图1.16所示。

图1.16 Visual Studio 2019标准工具栏

(2)调试工具栏包括对应用程序进行调试的快捷按钮,如图1.17所示。

图1.17 Visual Studio 2019调试工具栏

说明

在调试程序或运行程序的过程中,通常可用以下4种快捷键来实现相关操作。

(1)按F5快捷键实现调试运行程序操作。

(2)按Ctrl+F5快捷键实现不调试运行程序操作。

(3)按F11快捷键实现逐语句调试程序操作。

(4)按F10快捷键实现逐过程调试程序操作。

1.3.4 解决方案资源管理器

解决方案资源管理器提供了项目及文件的视图,并且还提供了对项目和文件相关命令的便捷访问,如图1.18所示。与此窗口关联的工具栏提供了用于在列表中突出显示项的常用命令。若要访问解决方案资源管理器,可以选择“视图”→“解决方案资源管理器”打开。

图1.18 解决方案资源管理器

1.3.5 “工具箱”窗口

“工具箱”窗口是Visual Studio 2019的重要工具,每一个开发人员都必须对这个工具非常熟悉。“工具箱”窗口提供了进行C#程序设计必需的控件。通过“工具箱”窗口,开发人员可以方便地进行可视化的窗体设计,从而减少程序设计的工作量,提高工作效率。根据控件功能的不同,“工具箱”窗口中共有10个栏目,如图1.19所示。

说明

“工具箱”窗口在Windows窗体应用程序或者ASP.NET Web应用程序中才会显示,控制台应用程序中没有“工具箱”窗口,图1.19所示为Windows窗体应用程序中的“工具箱”窗口。

单击某个栏目,可以展开显示该栏目下的所有控件,如图1.20所示。当需要某个控件时,可以双击所需要的控件直接将其加载到Windows窗体中;也可以先选择需要的控件,再将其拖曳到Windows窗体中。

图1.19 “工具箱”窗口

图1.20 展开某栏目后的“工具箱”窗口

1.3.6 “属性”窗口

“属性”窗口是Visual Studio 2019中另一个重要的工具,该窗口为C#程序的开发提供了简单的属性修改方式。Windows窗体应用程序中的各个控件属性都可以由“属性”窗口设置完成。“属性”窗口不仅提供了属性的设置及修改功能,还提供了事件的管理功能。“属性”窗口可以管理控件的事件,方便编程时对事件进行处理。

另外,“属性”窗口采用了两种方式管理属性和方法,分别为按分类方式和按字母顺序方式。读者可以根据自己的习惯采用不同的方式。该窗口的下方还有帮助栏,以方便开发人员对控件的属性进行操作和修改。“属性”窗口的左侧是属性名称,右侧是属性值。“属性”窗口如图1.21所示。

图1.21 “属性”窗口

1.3.7 “错误列表”窗口

“错误列表”窗口针对代码中的错误,为用户提供了即时的提示和可能的解决方法。例如,当某句代码结束时忘记了输入分号,“错误列表”窗口中会显示图1.22所示的错误。“错误列表”窗口就像是一个错误提示器,可以将程序中的错误即时显示给开发人员,并让开发人员通过提示信息找到相应的错误代码。

图1.22 “错误列表”窗口

说明

双击“错误列表”窗口中的某项,Visual Studio 2019会自动定位到发生错误的代码。

1.4 课后测试

1.有关C#的描述,以下选项正确的是(  )。

A.C#是一种面向对象的编程语言

B.C#程序的书写格式自由,一个语句可以写在多行上

C.C#程序的基本单位是方法

D.C#中不区分字母大小写

2.解决方案文件的扩展名为(  )。

A..cs

B..sln

C..exe

D..csproj

3.以下选项中,对C#特点的描述不正确的是(  )。

A.具有丰富的运算符和数据类型

B.可以直接对硬件操作

C.语法限制非常严格,程序设计自由度小

D.具有良好的移植性

4.被誉为C#之父的是(  )。

A.詹姆斯戈斯林

B.安德斯海尔斯伯格

C.肯汤普森

D.马克扎克伯格

5.“工欲善其事,必先利其器”。要想学好一门编程语言,首先就要了解它的开发环境。以下哪个图标属于C#的开发工具?(  )

A.

B.

C.

D.

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e57248”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。

第2章 第一个C#程序

视频教学:73分钟

本章主要通过经典的“Hello World”程序讲解C#程序的开发过程,以及C#程序的主要结构和基本编程规范。

2.1 编写第一个C#程序

扫码看视频

大多数编程语言编写的第一个程序通常都是输出“Hello World”,这里将使用Visual Studio 2019和C#语言来编写这个程序。使用Visual Studio 2019开发C#程序的基本步骤如图2.1所示。

图2.1 使用Visual Studio 2019开发C#程序的基本步骤

根据图2.1所示的3个步骤,开发人员可很方便地编写并运行一个C#程序。例如,使用Visual Studio 2019编写在控制台输出“Hello World”的程序并运行,具体开发步骤如下。

(1)选择“开始”→“所有程序”→“Visual Studio 2019”,进入Visual Studio 2019开发环境开始界面,单击“创建新项目”选项,如图2.2所示。

说明

如果是Windows 10操作系统,则在“开始”菜单中找到并单击“Visual Studio 2019”,即可打开Visual Studio 2019开发环境。

(2)进入“创建新项目”界面,在右侧选择“控制台应用(NET.Framework)”,单击“下一步”按钮,如图2.3所示。

图2.2 单击“创建新项目”选项

图2.3 “创建新项目”界面

说明

在图2.3所示的界面中选择“Windows窗体应用(.NET Framework)”,即可创建Windows窗体应用程序。

(3)进入“配置新项目”界面,在该界面中输入控制台应用程序名称,并选择程序保存路径和使用的.NET Framework版本。然后单击“创建”按钮,即可创建一个控制台应用程序,如图2.4所示。

图2.4 “配置新项目”界面

说明

图2.4所示的“位置”可以设置为计算机上的任意路径。

(4)控制台应用程序创建完成后,会自动打开Program.cs文件,在该文件的Main方法中输入如下代码。

static void Main(string[] args)          //Main方法,程序的入口方法
{
      Console.WriteLine("Hello World");  //输出“Hello World”
      Console.ReadLine();                //定位控制台窗体
}

代码注解

(1)第1行代码是自动生成的Main方法,是程序的入口方法,每一个C#程序都必须有一个Main方法。

(2)第3行代码中的Console.WriteLine方法主要用来向控制台中输出内容。

(3)第4行代码中的Console.ReadLine方法主要用来获取控制台中的输入内容,这里用来将控制台窗体定位到桌面上。

单击Visual Studio 2019开发环境工具栏中的按钮,运行该程序,效果如图2.5所示。

图2.5 输出“Hello World”

2.2 C#程序结构预览

扫码看视频

前面讲解了如何创建第一个C#程序,其完整代码如图2.6所示。

图2.6 “Hello World”程序完整代码

从图2.6中可以看出,一个C#程序总体可以分为命名空间、类、关键字、标识符、Main方法、C#语句和注释等。本节将分别对C#程序的各个组成部分进行讲解。

2.2.1 命名空间

在Visual Studio 2019开发环境中创建项目时,会自动生成一个与项目名称相同的命名空间,如图2.7所示。

图2.7 自动生成的命名空间

命名空间在C#中起组织程序的作用,在C#中定义命名空间时需要使用namespace关键字,其语法格式如下。

namespace 命名空间名

说明

开发人员一般不用自定义命名空间,因为在创建项目或者类文件时,Visual Studio 2019开发环境会自动生成一个命名空间。

命名空间既用作程序的“内部”组织系统,也用作向“外部”公开的组织系统(即一种向其他程序公开自己拥有的程序元素的方法)。如果要调用某个命名空间中的类或者方法,首先需要使用using指令引用命名空间,然后就可以直接使用该命名空间所包含的成员(包括类及类中的属性、方法等)。

using指令的基本形式如下。

using 命名空间名;

说明

C#中的命名空间就像一个存储了不同类型物品的仓库,而using指令就像一把钥匙,命名空间的名称就像仓库的名称。用户可以通过钥匙打开指定名称的仓库,从而从仓库中获取所需的物品。

例如,下面的代码定义了一个名为Demo的命名空间。

namespace Demo  //自定义一个名称为Demo的命名空间

定义完命名空间后,如果要使用命名空间中所包含的类,需要使用using引用命名空间。例如,下面的代码使用using引用Demo命名空间。

using Demo;  //引用自定义的Demo命名空间

常见错误

如果在使用指定命名空间中的类时没有使用using引用命名空间,如下面代码,则会出现图2.8所示的错误提示信息。

namespace Test
{
    class Program
    {
         static void Main(string[] args)
         {
           //创建Demo命名空间中Operation类的对象
           Operation oper = new Operation();  
         }
    }
}
namespace Demo  //自定义一个名称为Demo的命名空间
{
    class Operation  //自定义一个名称为Operation的类
    {
    }
}

 

图2.8 没有引用命名空间而使用其中的类时出现的错误

要改正以上代码,可以直接在命名空间区域使用using引用Demo命名空间,代码如下。

using Demo;                                   //引用自定义的Demo命名空间

多学两招

在使用命名空间中的类时,除了用using指令引用命名空间,还可以在代码中使用命名空间调用其中的类。例如,下面的代码直接使用Demo命名空间调用其中的Operation类。

//使用Demo命名空间调用其中的Operation类
Demo.Operation oper = new Demo.Operation();

2.2.2 类

C#程序的主要功能代码都是在类中实现的。类是一种数据结构,它可以封装数据成员、方法成员和其他的类。因此,类是C#语言的核心和基本构成模块。C#支持自定义类,使用C#编程就是编写自己的类来描述实际需要解决的问题。

说明

如果把命名空间比作一个医院,类就相当于该医院的各个科室,如内科、骨科、泌尿科、眼科等,各科室中都有自己的工作方法,相当于在类中定义的变量、方法等。

使用类之前必须进行声明。一个类一旦被声明,就可以当作一种新的类型来使用。在C#中使用class关键字来声明类,声明语法格式如下。

class  [类名]
{
            [类中的代码]
}

说明

声明类时,还可以指定类的修饰符和类要继承的基类或者接口等信息,这里只需要知道如何声明一个最基本的类即可。

上面的语法中,在命名类的名称时,最好能够体现类的含义或者用途。类名一般采用第一个字母大写的名词,也可以采用多个词构成的组合词。

例如,声明一个汽车类并命名为Car,代码如下。

class Car
{
}

2.2.3 关键字与标识符

1.关键字

关键字是指C#语言中已经被赋予特定意义的一些单词。在开发程序时,不可以把这些关键字作为命名空间、类、方法或者属性等的名称。“Hello World”程序中的using、namespace、class、static和void等都是关键字。C#语言中的常用关键字如图2.9所示。

int

public

this

finally

boolean

abstract

continue

float

long

short

throw

return

break

for

foreach

static

new

interface

if

goto

default

byte

do

case

void

try

switch

else

catch

private

double

protected

while

char

class

using

图2.9 C#语言中的常用关键字

常见错误

如果在开发程序时,使用C#中的关键字作为命名空间、类、方法或者属性等的名称,如下面的代码使用C#关键字void作为类的名称,则会出现图2.10所示的错误提示信息。

class void
{
}

 

图2.10 使用C#中的关键字作为类名时出现的错误信息

2.标识符

标识符可以简单地理解为一个名字(例如,每个人都有自己的名字),主要用来标识类名、变量名、方法名、属性名、数组名等各种成员。

C#语言标识符命名规则如下。

(1)由任意顺序的字母、下画线“_”和数字组成。

(2)第一个字符不能是数字。

(3)不能是C#中的关键字。

下面是合法的标识符。

_ID
name
user_age

下面是非法的标识符。

4word      //以数字开头
string     //C#中的关键字

注意

标识符中不能包含“#”“%”及“$”等特殊字符。

在C#语言中,标识符中的字母是严格区分大小写的。两个同样的单词,如果大小写不一样,所代表的意义是完全不同的。例如,下面3个变量是完全独立的,就像3个长得比较像的人,彼此之间都是独立的个体。

int number=0;  //全部小写
int Number=1;  //部分大写
int NUMBER=2;  //全部大写

说明

在C#语言中允许使用汉字作为标识符,如“class 运算类”。此类标识符在程序运行时并不会出现错误,但建议读者尽量不要使用汉字作为标识符。

2.2.4 Main方法

在Visual Studio 2019开发环境中创建控制台应用程序后,会自动生成一个Program.cs文件。该文件中有一个默认的Main方法,代码如下。

class Program
 {
       static void Main(string[] args)
       {
       }
 }

每一个C#程序中都必须包含一个Main方法,它是类体中的主方法,也叫入口方法,可以说是激活整个程序的开关。Main方法从“{”开始,至“}”结束。static和void分别是Main方法的静态修饰符和返回值修饰符,C#程序中的Main方法必须声明为static,并且区分大小写。

常见错误

如果将Main方法前面的static关键字删除,则程序会在运行时出现图2.11所示的错误提示信息。

图2.11 删除static关键字后出现的错误

Main方法一般都是在创建项目时自动生成的,不用开发人员手动编写或者修改。如果需要修改,则需要注意以下3个方面。

Main方法在类或结构内声明,它必须是静态(static)的,而且不应该是公用(public)的。

Main的返回类型有两种:void 或 int。

Main方法可以包含命令行参数string[] args,也可以不包含。

根据以上3个注意事项,可以总结出Main方法有以下4种声明方式。

static void Main ( string[ ] args )  {  }
static void Main ( ) {  }
static int Main  ( string[ ] args )  {  }
static int Main  ( ) {  }

技巧

通常Main方法中不写具体逻辑代码,只做类实例化和方法调用。好比手机来电话了,只需要按“接通”键就可以通话,而不需要考虑手机通过怎样的信号转换将电磁信号转化成声音。这样的代码简洁明了,容易维护。养成良好的编程习惯可以让程序员的工作事半功倍。

2.2.5 C#语句

C#语句是构造所有C#程序的基本单位,使用它可以声明变量、声明常量、调用方法、创建对象或执行任何逻辑操作,C#语句以分号结束。

例如,在“Hello World”程序中输出“Hello World”字符串和定位控制台窗体的代码就是C#语句,代码如下。

Console.WriteLine("Hello World");                //输出“Hello World”
Console.ReadLine();                              //定位控制台窗体

上面的代码是两条最基本的C#语句,用来在控制台窗体中输出和读取内容,它们都用到了Console类。Console类表示控制台应用程序的标准输入流、输出流和错误流。该类中包含很多的方法,与输入输出相关的方法主要有4个,如表2.1所示。

表2.1 Console类中与输入输出相关的方法

方法

说明

Read

从标准输入流读取下一个字符

ReadLine

从标准输入流读取下一行字符

Write

将指定的值写入标准输出流

WriteLine

将当前行终止符写入标准输出流

其中,Console.Read方法和Console.ReadLine方法用来从控制台读入,它们的使用区别如下。

Console.Read方法:返回值为int类型,只能记录int类型的数据。

Console.ReadLine方法:返回值为string类型,可以将控制台中输入的任何类型数据存储为字符串类型数据。

技巧

在开发控制台应用程序时,经常使用Console.Read方法或者Console.ReadLine方法定位控制台窗体。

Console.Write方法和Console.WriteLine方法用来向控制台输出,它们的使用区别如下。

Console.Write方法——输出后不换行。

例如,使用Console.Write方法输出“Hello World”字符串,代码如下,效果如图2.12所示。

Console.Write("Hello World");

图2.12 使用Console.Write方法输出“Hello World”字符串

Console.WriteLine方法——输出后换行。

例如,使用Console.WriteLine方法输出“Hello World”字符串,代码如下,效果如图2.13所示。

Console.WriteLine("Hello World");

图2.13 使用Console.WriteLine方法输出“Hello World”字符串

注意

C#代码中所有的字母、数字、括号以及标点符号均为英文输入法状态下的半角符号,不能是中文输入法状态下的全角符号。例如,图2.14所示为使用中文输入法的分号引起的错误提示。

图2.14 使用中文输入法的分号引起的错误提示

2.2.6 注释

注释是指在编译程序时被忽略的代码或文字,主要功能是对某行或某段代码进行说明,方便代码的理解与维护;或者在调试程序时,用于将某行或某段代码设置为无效代码。常用的注释主要有行注释和块注释两种,下面分别进行简单介绍。

说明

注释就像是超市中各商品下面的标签,用于对商品的名称、价格、产地等信息进行说明。而程序中的注释的最基本作用就是描述代码,告诉别人你的代码要实现什么功能。

1.行注释

行注释以“//”开头,后面跟注释的内容。例如,在“Hello World”程序中使用行注释,解释每一行代码的作用,代码如下。

static void Main(string[] args)             //Main方法,程序的入口方法
{
     Console.WriteLine("Hello World");      //输出“Hello World”
     Console.ReadLine();                    //定位控制台窗体
}

注意

注释可以出现在代码的任意位置,但是不能分隔关键字和标识符。例如,下面的代码注释是错误的。

static void                             //错误的注释 Main(string[] args)

2.块注释

如果注释的行数较少,一般使用行注释。对于连续多行的大段注释,则建议使用块注释。块注释通常以“/*”开始,以“*/”结束,注释的内容放在它们之间。

例如,在“Hello World”程序中使用块注释将输出“Hello World”字符串和定位控制台窗体的C#语句注释为无效代码,代码如下。

static void Main(string[] args)                //Main方法,程序的入口方法
{
      /*块注释开始
         Console.WriteLine("Hello World");        //输出“Hello World”字符串
         Console.ReadLine();
     */
}

技巧

块注释通常用来为类文件、类或者方法等添加版权、功能等信息。例如,下面的代码使用块注释为Program.cs文件添加版权、功能及修改日志等信息。

/*
 * 版权所有:吉林省明日科技有限公司©版权所有
 * 
 * 文件名:Program.cs
 * 文件功能描述:类的主程序文件,主要作为入口
 * 
 * 创建日期:2020年6月1日
 * 创建人:王小科
 * 
 * 修改标识:2020年6月5日
 * 修改描述:增加Add方法,用来计算不同类型数据的和
 * 修改日期:2020年6月5日
 * 
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test
{
    class Program
    {
    }
}

2.2.7 一个完整的C#程序

通过以上内容的讲解,我们熟悉了C#程序的基本组成。下面通过一个实例讲解如何编写一个完整的C#程序。

使用Visual Studio 2019开发环境编写一个控制台应用程序,使用Console.WriteLine方法在控制台中模拟输出“编程词典(珍藏版)”软件的启动页面。程序代码如下。

static void Main(string[] args)
{
       Console.WriteLine(" --------------------------------------------");
       Console.WriteLine("|      |");       Console.WriteLine("|      |");
       Console.WriteLine("|                                           |");
       Console.WriteLine("|                                           |");
       Console.WriteLine("|                                           |");
       Console.WriteLine("|              编程词典(珍藏版)               |");
       Console.WriteLine("|                                           |");
       Console.WriteLine("|                                           |");
       Console.WriteLine("|                                           |");
       Console.WriteLine("|              开发团队:明日科技              |");
       Console.WriteLine("|                                           |");
       Console.WriteLine("|                                           |");
       Console.WriteLine("|                                           |");
       Console.WriteLine("|                                           |");
       Console.WriteLine("|       copyright 2000—2019 明日科技         |");
       Console.WriteLine("|                                           |");
       Console.WriteLine("|                                           |");
       Console.WriteLine("|                                           |");
       Console.WriteLine(" --------------------------------------------");
       Console.ReadLine();
}

输入以上代码后,单击Visual Studio 2019开发环境工具栏中的按钮,即可运行该程序。程序运行结果如图2.15所示。

图2.15 输出软件的启动页面

2.3 程序编写规范

扫码看视频

下面给出两段实现同样功能的代码,如图2.16所示。

图2.16 两段功能相同的C#代码

大家在学习时,愿意看图2.16中的左侧代码还是右侧代码?答案肯定都是喜欢阅读右侧代码,因为它看上去更加工整,这是一种最基本的代码编写规范。本节将对C#代码的编写规则以及命名规范进行介绍。遵循一定的代码编写规则和命名规范可以使代码更加规范化,对代码的理解与维护起到至关重要的作用。

2.3.1 代码编写规则

代码编写规则通常对应用程序的功能没有影响,但它们对改善观者对源代码的理解是有帮助的。养成良好的代码编写习惯对软件的开发和维护都是很有益的,下面列举一些常用的代码编写规则。

统一代码缩进的样式,例如统一缩进两个字符或者4个字符。

每编写完一句C#代码,都应该换行编写下一句代码。

合理使用空格,使代码结构更加清晰。

尽量使用接口,然后使用类实现接口,以提高程序的灵活性。

关键的语句(包括声明关键的变量)必须要写注释。

建议局部变量在最接近使用它的地方声明。

不要使用goto系列语句,除非是用于跳出深层循环。

避免编写超过5个参数的方法。如果要传递多个参数,则使用结构。

避免书写代码量过大的trycatch语句块。

避免在同一个文件中编写多个类。

生成和构建一个长的字符串时,一定要使用StringBuilder类型,而不用string类型。

对于if语句,应该使用一对“{}”把语句块括起来。

switch语句一定要有default语句来处理意外情况。

2.3.2 命名规范

命名规范在编写代码时起到很重要的作用,虽然不遵循命名规范程序也可以运行,但是遵循命名规范可以更加直观地了解代码所代表的含义。本小节将介绍C#中常用的一些命名规范。

1.两种命名方法

在C#中,最常用的两种命名方法分别是Pascal命名法和Camel命名法,下面分别介绍。

用Pascal命名法来命名方法和类型。Pascal命名法是指第一个字母必须大写,并且后面连接词的第一个字母均为大写。

说明

Pascal是为了纪念法国数学家布莱兹帕斯卡(Blaise Pascal)而命名的一种编程语言,C#中的Pascal命名法就是根据该语言的特点总结出来的一种命名方法。

例如,定义一个公共类,并在此类中创建一个公共方法,代码如下。

public class User  //创建一个公共类
{
     public void GetInfo()  //在公共类中创建一个公共方法
     {
     }
} 

用Camel命名法来命名局部变量和方法的参数。Camel命名法是指名称中第一个单词的第一个字母小写。

说明

Camel命名法又称驼峰式命名法,是根据骆驼的体形特征推理出来的一种命名方法。

例如,声明一个字符串变量和创建一个公共方法,代码如下。

string strUserName;  //声明一个字符串变量strUserName
//创建一个具有两个参数的公共方法
public void addUser(string strUserId, byte[] byPassword); 

2.程序元素的命名规范

在开发项目时,不可避免地会遇到各个程序元素的命名问题,例如项目的命名、类的命名、方法的命名等。例如,图2.17所示声明了一个User类,图2.18所示声明了一个aaa类。

图2.17 声明User类

图2.18 声明aaa类

可以很容易看出,图2.17中的User类应该是与用户相关的一个类;但是图2.18中声明的aaa类,即使再有想象力的人,恐怕也想象不出这个类到底是做什么用的。从这两个例子可以看出,在对程序元素命名时,如果遵循一定的规范,代码将更加具有可读性。下面介绍常用程序元素的基本命名规范。

在命名项目名称时,可以使用公司域名+产品名称,或者直接使用产品名称。

例如,在命名项目时,可以将项目命名为“mingrisoft.ERP”或“ERP”,其中mingrisoft是公司的域名,ERP是产品名称。

用有意义的名字定义命名空间,如公司名、产品名。

例如,利用公司名和产品名定义命名空间,代码如下。

namespace Mrsoft   //公司名
{
}
namespace ERP  //产品名
{
}

接口的名称加前缀“I”。

例如,创建一个公共接口Iconvertible,代码如下。

public interface Iconvertible  //创建一个公共接口Iconvertible
{
      byte ToByte();  //声明一个byte类型的方法
}

类的名称最好能够体现出类的功能或操作。

例如,创建一个名称为Operation的类,用来作为运算类,代码如下。

public class Operation   //表示一个运算类
{
}

一般将方法命名为动宾短语,用于表明该方法的主要作用。

例如,在公共类File中创建CreateFile方法和GetPath方法,代码如下。

public class File  //创建一个公共类
{
     public void CreateFile(string filePath)  //创建一个CreateFile方法
     {
     }
     public void GetPath(string path)  //创建一个GetPath方法
     {
     }
}

定义成员变量时,最好加前缀“_”。

例如,在公共类DataBase中声明一个私有成员变量_connectionString,代码如下。

public class DataBase  //创建一个公共类
{
     private string _connectionString;  //声明一个私有成员变量
}

2.4 课后测试

1.在C#程序中,多行注释部分以符号“/*”开始,结束的符号是(  )。

A.//

B.*/

C.)

D.}

2.以下叙述正确的是(  )。

A.在C#程序中,Main方法必须放在其他方法的前面

B.每个后缀为“.cs”的C#源程序都可以单独进行编译

C.在C#程序中,只有Main方法才可以进行编译

D.每个后缀为“.cs”的C#源程序都应该包含一个Main方法

3.以下是关于C#注释的描述,其中错误的是(  )。

A.C#中的注释形式分为单行注释和多行注释两种

B.多行注释以“/*”开头,以“*/”结尾,“/”与“*”之间不能有空格

C.注释只在C#源文件中有效,在编译时会被编译器忽略

D.注释只能位于语句的后面

4.以下选项中不合法的标识符是(  )。

A._ID

B.iHeight

C.num_7

D.static

5.3月6日是张老师的生日,同学们都表达了对老师的生日祝福,以下哪句生日祝福语是正确的程序运行结果?(  )

Console.WriteLine("Happy birthday!");

A.HAPPY BIRTHDAY!

B.Happy birthday!

C.Happy birthday

D.Happy birthday!\n

2.5 上机实战

1.编写程序,换行输出世界上最好的6个医生,具体内容如下。

1.阳光
2.休息
3.锻炼
4.饮食
5.自信
6.朋友

实现效果如图2.19所示。(提示:转移字符\n表示换行。)

图2.19 实现效果

2.输出图2.20所示的12306网站的查询页面,实现效果如图2.21所示。

图2.20 12306网站的查询页面

图2.21 实现效果

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e57248”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。

相关图书

程序员的制胜技
程序员的制胜技
C#开发案例精粹
C#开发案例精粹
C#从入门到精通(第2版)
C#从入门到精通(第2版)
 C#初学者指南
C#初学者指南
C#本质论(第4版)
C#本质论(第4版)
C# 5.0入门经典
C# 5.0入门经典

相关文章

相关课程