版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、121世纪高等院校计算机系列教材C# 程 序 设 计2第1章 C#背景知识1.1 C#的历史1.2 Microsoft .NET框架1.3 什么是程序1.4 编程原则1.5 编程陷阱1.6 小结31.1 C的历史1960年前后,一种名为Algol 60 的程序设计语言诞生了。大约在1970年,B语言被改写成C语言。大约在1980年,Stroustrup创建了C+。 Microsoft在2002年宣告了C#语言的诞生。41.2 Microsoft.NET框架 Microsoft在2002年推出一个名为.NET框架的新主流产品。其主要特性有:包括编程语言C#、Visual Basic和C+。具有帮
2、助程序员创建交互网站的实用工具。.NET也可用于其他操作系统。它允许构建由组件(“对象”)组成的软件,并且可以在网络上发布。51.3 什么是程序 本节告诉读者程序是什么。举一个简单的程序例子:弄湿头发倒一点洗发水用洗发水揉搓头发清洗头发 这个程序阐明了程序是要执行的指令序列,从第一条指令开始,逐条执行,直到指令序列结束。 返回目录6 概括地说,程序是计算机自动执行的一系列指令。程序由以下部分组合而成:顺序。循环。选择。方法。现有对象。自己编写的对象。 所有现代程序设计语言都具有这些特性。71.4 编程原则程序由指令组成,这些指令结合了顺序、选择、循环和子任务这些概念。利用现有组件可简化编程任务
3、。81.5 编程陷阱人为错误可以带入到程序中,例如,指令顺序错误、逻辑错误、书写错误。91.6 小结C#是面向对象的程序设计语言,它源于C+和Java。Microsoft的.NET框架是一个主流产品,它可以使用C#、C+和Visual Basic语言。程序是计算机自动执行的一系列指令。当前编程实践的主要趋势是面向对象程序设计(OOP)方法,C#完全支持该方法。10第2章 C#开发环境2.1 简介2.2 安装与配置 2.3 创建第一个程序 2.4 设计时控件2.5 事件和Button控件 2.6 打开一个现有工程 2.7 属性设置的文档化 2.8 程序错误 112.9 编辑器工具 2.10 消息
4、对话框 2.11 帮助 2.12 编程原则 2.13 编程陷阱 2.14 语法点 2.15 新的语言元素 2.16 新的IDE工具 2.17 小结 122.1 简介 本书中使用IDE表示C#集成开发环境。正如字处理程序提供创建文档的工具一样,IDE提供创建(开发)程序的工具。IDE集成了用户所需的全部工具,因此可以在它的内部完成全部工作,而无须再借助其他程序。IDE提供了一个完全的编程环境。 本章将讨论Microsoft的IDE,也可以从其他来源得到C#的IDE。 132.2 安装与配置 Microsoft提供两类产品,使用它们均能创建C# .NET程序:Visual Studio .NET系
5、统,该系统还包括其他语言。C# .NET系统,只包括C#。 无论使用哪个系统,都需要遵循相应的安装程序。142.3 创建第一个程序首先使用Windows Explorer创建一个工作目录,然后将以后所建立的工程文件全部保存这个目录中,统一进行管理。操作步骤:运行IDE集成开发环境。出现Start Page。单击New Project按钮。将出现New Project窗口。单击Windows Application。为该工程指定一个存储位置,并为它命名。需要提供一个名称,它将成为一个文件夹的名称。注意,该名称只能由字母、数字和空格组成。这里选择First Hello。接下来需要定位First H
6、ello文件夹。IDE会记住你将所做的工作存储在哪里,但创建第一个工程的时候,需要单击Browse按钮。这时打开一个Project Location窗口。找到你将存储所有C#工作成果的文件夹(这里是C#Projects)并单击OK按钮。在Project Location窗口,单击Open按钮。从现在开始,IDE将把所有新建的工程文件夹存储在C# Projects文件夹中。最后,在New Project窗口中单击OK按钮。 152.4 设计时控件什么是控件?控件是显示在屏幕上的“小配件”,用来显示信息、允许用户交互或身兼这两个功能。 162.5 事件和Button控件 事件:例如鼠标单击、双击或
7、悬停在某个控件上这都是事件。也有很多事件不是由用户生成的,例如,一个网页在结束下载时发出的通知,也是一个事件。Button控件:使用按钮控件,可以触发按钮事件,然后执行一系列的指令集。172.6 打开一个现有工程 要重新打开以前创建的工程,请保存并关闭正在使用的当前工程,并进入Start Page。它显示最近的工程。要打开一个最近的工程,只需单击工程名称。182.7 属性设置的文档化 本书中提供一些控件的设置。对于少数几个属性而言,可以用几个句子来解释它们。如果属性数量很多,就需要使用表来表示。通常有很多控件,而每个控件又有很多属性,每个属性有一个或者几个值。 192.8 程序错误 每个人在编
8、程之初都会面对大量的编译错误。这是学习过程的一个必经阶段。编译错误列在Task List窗口中,该窗口在代码下方打开。在输出窗口中双击错误将带你到代码中出错的地方,并在那里改正错误。只有改正全部编译错误之后,程序才能运行。 202.9 编辑器工具 编辑器的一些工具:标准的剪切板剪切、复制和粘贴。编写较大程序的控件和事件。 通过插入其他的空格来缩进键入的某些行。每一类控件都有一组不同的属性。 将目前不使用的代码段压缩为一行代码。 返回目录212.10 消息对话框 消息对话框是用来给用户提示一些信息或者提示一些信息由用户进行选择判断,然后程序根据用户做出的选择,继续执行下去。消息对话框不在工具箱中
9、,它只在需要的时候弹出。222.11 帮助 C#具有一个大型的帮助系统,它包含的信息对你很有帮助。(当在编写程序代码时,如果想对某一个函数具体了解时,可以将光标移动到这个函数上,然后按F1键,这时就会出现相应的函数帮助,在这之前必须安装MSDN帮助文档。) 232.12 编程原则在设计时在窗体上放置控件。在设计时设置控件的属性。程序可以在运行时改变属性。当事件(比如单击按钮)发生时,C#系统使用匹配的方法。在该方法中放置代码以处理此事件。242.13 编程陷阱在试图修改窗体或代码之前忘记中止运行程序。混淆设计时窗体和运行时窗体。设计时窗体上具有网格点。在需要的地方忘记使用大写字母或分号 。25
10、2.14 语法点在C#代码中,通过控件的名称来引用控件的属性,格式是在控件名后加一个点,点后面是属性名,如下所示: label1.Text方法的形式如下: private void . 在花括号中放入指令。消息对话框不是放置到窗体上的,使用下面的代码显示一个消息对话框: MessageBox.Show(Some text you choose);262.15 新的语言元素属性、方法和事件的介绍 272.16 新的IDE工具 程序包含在工程中。IDE创建文件夹以包含工程需要的文件。可以移动窗体上的控件或调整它的大小。工具箱包含一系列控件。单击鼠标右键可允许用户选择控件的属性。在设计时双击控件将创
11、建事件处理方法。一个解决方案可以包含多个工程。通常,在一个解决方案中只放入一个工程。IDE能够格式化(缩排)代码。当键入控件名之后,可设置IDE以列出属性。282.17 小结 编程的部分任务是在窗体上放置控件,并设置它们的初始属性。C#的IDE简化了此项任务,除了阅读它的使用方法之外,还需要练习使用IDE。29第3章 图形简介3.1 简介3.2 对象、方法、属性和类的类比 3.3 第一次绘图 3.4 创建程序 3.5 图形坐标系统 3.6 解释程序 3.7 绘图方法 3.8 颜色 303.9 顺序概念和语句 3.10 使用注释来添加含义 3.11 编程原则 3.12 编程陷阱 3.13 语法要
12、点 3.14 新的语言元素 3.15 新的IDE工具 3.16 小结 313.1 简介 计算机图形:既可以是由计算机生成的好莱坞影片,也可以是一个复杂的视频游戏,一个虚拟的现实环境,显示器上一个图形样式的静态图像,或一个由线条构建的简单图像。323.2 对象、方法、属性和类的类比 在C#中,new用来为程序员提供将要使用的新建对象。使用方法在术语上称为“调用”方法。除了方法,对象还具有属性。不能调用属性 。333.3 第一次绘图 现在创建一个单击按钮时在图片框中显示两个矩形的程序。下面是代码清单:private void button1_Click(object sender, System.
13、EventArgs e) Graphics paper; paper = pictureBox1.CreateGraphics(); Pen pen = new Pen(Color.Black); paper.DrawRectangle(pen, 10, 10, 100, 50); paper.DrawRectangle(pen, 10, 75, 100, 100);343.4 创建程序 基本步骤如下:进入C# IDE。创建一个新的Windows Application工程。按上面的方法设置工程选项。在窗体上添加一个按钮和一个图片框。单击图片框,将它的Size属性改为150,200。将图片框的
14、BackColor属性改为合适的颜色。如果需要,可以改变窗体标题的文字。双击按钮并插入绘图指令。 353.5 图形坐标系统 C#图形是基于像素的。像素是屏幕上的小点,可以用来设置特定的颜色。每个像素都由从零开始的一对数字(坐标)来标识:水平位置,在C#文档中称为x。该值从左向右递增。垂直位置,经常称为y,该值从上向下递减。 363.6 解释程序 这里只解释这几行代码。Graphics paper;paper = pictureBox1.CreateGraphics();Pen pen = new Pen(Color.Black);第1行选择绘图区的名称。第2行将绘图区链接到在窗体上添加的图片框
15、。第3行为画笔命名。 373.7 绘图方法 与绘制矩形一样,C#还提供了绘制一系列形状的工具。例如:线条。椭圆(即卵形)也包括圆形。实心矩形和椭圆。来自文件的图像。383.8 颜色 在C#中,大约有150种命名的颜色。下面列举一些主要的颜色和一些罕用的颜色:Black Violet BlueIndigo Green YellowOrange Red GrayPurple White FirebrickLemonChiffon Maroon OliveDrab393.9 顺序概念和语句 当程序中有很多语句时,它们按从屏幕的顶部到底部的顺序来执行。 通常,C#程序由一系列的语句构成。语句有很多种类
16、型,比如方法调用或赋值语句。有些语句只占一行,但其他(比如if和while,不久就会看到)语句需要涵盖数行。403.10 使用注释添加含义 在C#中,可以为指令添加注释(一种注解),方法是使用/或使用/* . */。最简单的方法是在注释前使用/,注释可以包含任何内容,没有特定的规则。 413.11 编程规则 C#具有大量的可调用方法。传递给图形方法的参数的作用是控制绘制的形状。423.12 编程陷阱 注意标点、拼写和方法名的大小写。逗号和括号必须像示例程序中的那样精确。433.13 语法要点 每个方法中的参数的顺序和类型必须正确。443.14 新的语言元素 ( )用来括起参数。在声明项时类名称
17、的使用。创建新对象时new的使用。调用类的方法时“.”符号的使用。在注释前/的使用,以及用来括起注释的/*和*/的使用。结束语句的“;”的使用。453.15 新的IDE工具 没有新的IDE工具。463.16 小结 语句必须遵守一定的顺序,从上到上执行。C#具有一组“绘图”方法,可以调用它们来显示图形。图形定位基于像素坐标。参数值可以传递给方法。47第4章 变量和计算4.1 简介4.2 int的本质4.3 double的本质4.4 声明变量4.5 赋值语句4.6 计算和运算符484.7 算术运算符4.8 运算符4.9 使用+运算符连接字符串4.10 字符串和数字之间的转换 4.11 文本框和标签
18、 4.12 数字之间的转换 返回目录494.13 表达式的作用 4.14 编程原则 4.15 编程陷阱 4.16 语法要点 4.17 新的语言元素 4.18 新增的IDE工具 4.19 小结504.1 简介 这里将介绍两种基本的数值类型:整数,数学中称为整数,C#中称为int类型。“小数点”数,数学中称为实数,C#中称为double。 选择int或double应该视具体问题而定。 514.2 int的本质 在C#中使用int时,可能范围是: -2,147,483,648+2,147,483,647,或大约-2,000,000,000+2,000,000,000之间的一个整数。所有的int计算都
19、是精确的,也就是说,数字中的全部信息都被正确地保留。 返回目录524.3 double 的本质 在C#中使用double数字时,它的值可以位于-1.79103081.7910308之间。 double具有如此大的范围和精确数字,应付日常数量的计算其精确度是绰绰有余了。 534.4 声明变量 在C#中,这些名称:必须以字母开头(AZ或az)。可包含任意字母或数字(数字为09)。可包含下划线“_”。最多255个字符。 注意,C#是区分大小写的。 544.5 赋值语句 变量一旦声明,就可以通过赋值语句将新值放入它们之中,如下所示: length = 20; 注意:数据是从的右边到左边移动。无论len
20、gth原先是什么值,现在它被20“重写”。变量只能有一个值,即当前值。 554.6 计算和运算符 C#使用运算符+和-执行递增和递减(减1)。它们最频繁的使用是在循环中(第8章)。下面是+ 运算符的一种用法: n = 3; n+; / n的当前值是4 =的要点是它不同于代数意义上的“等于”。不妨将它看作“变为”或“得到”的意思。564.7 算术运算符 运算符 含义* 乘/ 除% 取模+ 加- 减574.8 %运算符 %(取模)运算符经常与整数除法一起使用,用来提供余数部分。 %最常用于int类型,但它同样可以用于double类型。 返回目录584.9 使用+运算符连接字符串 int i = 2
21、, j = 3; string s, note = Answer is: ; s = note + i + j; s的值是多少?有两种可能性: 答案是:23,两个+运算符均作用于字符串。 答案是:5,第二个+使两个数字相加。 事实上,将发生第一种情况。C#工作的顺序是从左到右。第一个+生成字符串“Answer is: 2”。然后第二个+将3连入结尾。不过,如果使用:s = note + (i + j);则先计算2 + 3,得到5。最后才发生字符串连接。返回目录594.10 字符串和数字之间的转换 使用ToString方法转换数字变量或算式,例如: string s1, s2; int num
22、= 44; double d=1.234; s1 = Convert.ToString(num); / s1值为44 s2 = Convert.ToString(d); / s2值为1.234 上面的ToString方法返回一个字符串。可以通过将此字符串存储在一个变量中或以其他方式来使用它。返回目录604.11 文本框和标签 文本框可从工具箱中选择并拖放到窗体上。文本框具有非常多的属性,但最主要的属性是Text,供用户键入字符串。 标签将为用户显示一些帮助信息,通常通过属性窗口在设计时设置标签的属性。 返回目录614.12 数字之间的转换 从一种类型的数值转换为另一种类型最常见的情况是将一个i
23、nt转换为一个double,以及将一个double转换为一个int。返回目录624.13 表达式的作用 C#语言中的表达式类似于数学运算中的表达式,是操作符、操作对象和标点符号等连接而成的式子。操作符是用来定义类实例中表达式操作符的。表达式是指定计算的操作符操作数序列。返回目录634.14 编程规则 变量具有名称,该名称由程序员选择。变量具有类型,该类型由程序员选择。一个变量储存一个值。变量的值可以通过赋值语句来改变。返回目录644.15 编程陷阱 注意变量名的拼写。在刚开始的时候很难标注编译错误。括号必须成对。在标签和文本框的文本属性中使用数字时,记住要使用字符串转换工具。在将几个项目相乘时
24、,必须在它们之间加上*号。返回目录654.16 语法要点 通过声明变量的类及其名称来声明变量。最实用的类型是int、double和string。主要的算术运算符是*、/、%、+和-。+运算符用来连接字符串。+和-运算符用来完成递增和递减操作。使用Convert.ToString方法将数字转换为字符串。使用Convert.ToInt32和Convert.ToDouble方法将字符串转换为数字。在一个double项之前加上(int),可将它转换为一个整数。在一个int项之前加上(double) ,可将它转换为一个双精度值。返回目录664.17 新的语言元素 int double string。运算
25、符+、-、*、/、%。用于递增的+和递减的-。用于赋值的。强制转换:Convert类、(double)和(int)强制转换。返回目录674.18 新增的IDE工具 具有Text属性的TextBox和Label控件。控件的重命名。返回目录684.19 小结 变量用来保存值。它们直到显式改变之前一直保持原值。运算符对值进行运算。表达式是能生成一个值的算式。它可用于多种情况中,包括用在赋值的右边,或作为方法调用的参数。 返回目录69第5章 方法和参数5.1 简介 5.2 编写自己的方法5.3 第一个方法 5.4 调用方法 5.5 传递参数5.6 形参和实参705.7 三角形方法5.8 局部变量5.9
26、 命名冲突5.10 事件处理方法5.11 return和结果5.12 构建在方法上715.13 按引用传递参数5.14 out和ref参数 5.15 out的例子 5.16 ref的例子 5.17 一个使用ref的交换方法 5.18 this和对象 5.19 重载 725.20 将对象传递给方法 5.21 编程原则5.22 编程陷阱 5.23 语法要点5.24 新的语言元素5.25 新的 IDE工具5.26 小结735.1 简介 大型程序可能很复杂,这会导致它们难以理解和调试。减少复杂性最重要的技巧是将程序分成独立的段。而且,如果该段有名称,仅仅通过使用它的名称就可以调用或激活它。在某种程度上
27、,它使用户能够从更高的层次考虑问题。在C#中,这样的段称为方法。 745.2 编写自己的方法 Worldwide Cardboard Box公司有一个徽标(logo),它由相互包含的3个正方形组成。 以下是在(10, 20)和(100, 100)两处绘出两个相同徽标的代码:/ 在左上角绘制徽标paper.DrawRectang(10, 20, 60, 60);paper.DrawRectang(10, 20, 40, 40);paper.DrawRectang(10, 20, 20, 20);/ 在右下角绘制徽标paper.DrawRectang(100, 100, 60, 60);paper
28、.DrawRectang(100, 100, 40, 40);paper.DrawRectang(100, 100, 20, 20); 注意,正方形的大小是20、40和60像素,它们的左上角都处于同一点。 755.3 第一个方法 以下是一个名为Logo Method的完整程序。它告诉用户如何创建和使用方法,private void button1_Click(object sender, System.EventArgs e) Graphics paper; paper = pictureBox1.CreateGraphics(); Pen myPen = new Pen(Color.Blac
29、k); DrawLogo(paper, myPen, 10, 20); DrawLogo(paper, myPen, 100, 100);private void DrawLogo(Graphics drawingArea, Pen penToUse, int xPos, int yPos) drawingArea.DrawRectangangle(penToUse, xPos, yPos, 60, 60); drawingArea.DrawRectangangle(penToUse, xPos, yPos, 40, 40); drawingArea.DrawRectangangle(penT
30、oUse, xPos, yPos, 20, 20);765.4 调用方法 在C#中,通过给出方法的名称和括号中的参数列表来调用private方法。在上面的程序中,第一个调用是: DrawLogo(paper, myPen, 10, 20); 该语句有两个效果:参数值自动传递给方法。程序跳到方法的主体部分同时执行这部分语句。775.5 传递参数 理解参数如何传送给方法是很重要的。传递按照从左到右的顺序发生。调用必须提供参数的正确数值和类型。 在C#中将数据项传递给方法共有两种途径:值传递调用传递 785.6 形参和实参 在许多语言中,调用者提供的是“实参”(actual parameters),
31、而方法声明中使用的是“形参”(formal parameters)。795.7 三角形方法 为了介绍方法的更多特征,将创建一个更有用的方法,称之为DrawTriangle。 以下是关于DrawTriangle方法编码的几个要点:将它命名为DrawTriangle,但这完全取决于用户。也可以选择Triangle甚至DrawThing,但DrawTriangle符合库方法的名称。形参drawingArea、penToUse、xPlace、yPlace、width和height的名称也是由用户选择的。参数的顺序也由用户控制。如果愿意,也可以对方法重新编码,以便在宽度之前要求高度。(把宽度放在前面是因
32、为很多C#的库方法都使用这种顺序。)返回目录805.8 局部变量 局部变量的作用是协助方法的工作,而不管方法做什么。局部变量有一个有限的作用域,受限于自己的方法。它们的存在是临时的在方法调用时创建,在退出时销毁。815.9 命名冲突 在C#中,方法的创建者可以自由地为局部变量和参数选择合适的名称但是如果所选的名称与其他变量有冲突时会发生什么呢?对于下面的代码:private void MethodOne(int x, int y) int z = 0; / 代码.private void MethodTwo(int z, int x) int w = 1; / 代码. 假定该方法由两个人编写。
33、MethodOne有x、y作为参数,同时声明了一个整数z。这3个变量都是MethodOne的局部变量。在MethodTwo中,该程序员运用了为局部变量命名的自由权力并选择了z、x和w。x的(和z的)命名冲突没有出现什么问题,因为C#将MethodOne的x看作与MethodTwo的x不同。825.10 事件和处理方法 C#系统会将所有事件(比如按钮单击、鼠标单击等事件)发送给它们相应的事件方法。通常,不需要自己调用这些方法。835.11 return和结果 为了从方法返回一个值,使用return语句: return expression; 该表达式可能是数值、变量或算式(甚至是方法调用),但是
34、它的类型必须正确,与方法在声明中指定的类型一样。845.12 构建在方法上 使用来自C#库的DrawRectang方法和自己编写的DrawTriangle方法。 855.13 按引用传递参数传递参数方法的要点: 传递数据的副本(通过值)更为安全。 传递数据的所在之处(按引用传递)速度很快。 如果想要传递变量给方法,可有两种选择:传递当前值的一个副本。传递地址。 C#允许两种类型的引用:使用关键字ref或者out。 865.14 out和ref参数 关键字out和ref允许程序员精确访问并改变传递到方法中的调用参数。有两种可能性:调用方法通过某种方式修改现有的值。在术语上叫做“更新”。方法需要访
35、问参数的当前值。在这种情况下,使用关键字ref。调用方法将一个全新的值放到参数中,而不需要访问它的当前值。在这种情况下,使用关键字out。875.15 out的例子 private void button1_Click(object sender, System.EventArgs e) int originalCents, wholeDollars=0, centsLeft=0; originalCents = Convert.ToInt32(textBox1.Text); DollarsAndCents(originalCents, out wholeDollars, out centsL
36、eft); dollarsLabel.Text = Convert.ToString(wholeDollars); centsLabel.Text = Convert.ToString(centsLeft);private void DollarsAndCents(int totalCents, out int dollars, out int centsLeft) dollars = totalCents / 100; centsLeft = totalCents % 100;返回目录885.16 ref的例子 private void button1_Click(object sender
37、, System.EventArgs e) int pieWidth = 8, pieLength = 6; IncreaseSize(ref pieWidth, ref pieLength); IncreaseSize(ref pieWidth, ref pieLength); IncreaseSize(ref pieWidth, ref pieLength);private void IncreaseSize(ref int width, ref int length) int area; width = width + 2; length = length + 2; area = wid
38、th * length; MessageBox.Show(Pie size: + Convert.ToString(width) + by + Convert.ToString(length) + . Area is + Convert.ToString(area);895.17 一个使用ref的交换方法 编写方法交换两个变量的值是使用参数的一个典型例子。首先给出没有使用方法的程序代码: aCopy = a; a = b; b = aCopy;注意如果使用: a = b; b = a; 则最后a和b都被设置为b的原始值。 因此,希望将只能作用于变量a和b的代码捆绑成一个方法。该方法共有两个参数
39、,而且需要访问它们的原始值。 返回目录905.18 this和对象 当一个对象调用在它自己内部所声明的方法时,可以简单地使用: Swap(ref a, ref b); 或者可以使用完整的对象表示法,例如: this.Swap(ref a, ref b); this是一个C#关键字,代表当前正在运行的对象。 返回目录915.19 重载 类中两个以上的方法取的名字相同,只要使用的参数类型或者参数个数不同,编译器便知道在何种情况下应该调用哪个方法,这就叫做方法的重载。返回目录925.20 将对象传递给方法 在程序中主要介绍了传递数值,但有时也需要传递更为复杂的对象,比如画笔和图片框。下面有一个例子,
40、将传递两个将要相加的数值,同时传递一个用来显示结果的标签: private void ShowSum(Label display, int a, int b) display.Text = Convert.ToString(a + b); 可以像下面这样调用方法: ShowSum(label1, 3, 4); ShowSum(label2, 5, 456); 通过值传递,对象允许操作它的属性并调用它的方法。返回目录935.21 编程原则 方法是有名称的代码段。通过使用方法的名称调用方法。可以编写void方法,或者返回单个结果的方法。可以传递参数给方法,通过值或调用(使用ref或out)如果方法
41、只需要返回一个值,则考虑使用return而不是out或ref。如果能够在代码中识别出一项定义明确的任务,请考虑将它分离出来并且将它编写为一个方法。返回目录945.22 编程陷阱方法的标题必须包括参数类型。方法调用不能包括类型名。调用方法时,必须提供正确的参数个数和参数类型。必须安排以某种方式利用返回值。当一个方法指定它需要out或ref参数时,调用必须确保这一点。返回目录955.23 语法要点方法的通用模式包括两种形式。即返回结果和不返回结果。将方法作为表达式的一部分来调用。 方法体必须包括一条return语句,该语句说明值的正确类型。方法没有参数时,在声明和调用时都必须使用空括号()。形参列
42、表由方法的编写者创建。每个参数都需要一个名称和一个类型。实参列表由方法的调用者编写。 返回目录965.24 新的语言元素私有方法的声明。由方法名称和参数组成的方法调用。使用return从非void方法退出,同时传回一个值。使用return从void方法退出。out和ref的使用。重载的使用。使用this表示当前对象。返回目录975.25 新的IDE工具本章未介绍新的IDE工具。返回目录985.26 小结方法包含程序的子任务。可以将参数传递给方法。使用方法在术语上称为调用方法。非void方法返回一个结果。返回目录99第6章 使用对象6.1 简介6.2 实例变量6.3 窗体构造函数6.4 Trac
43、kBar类6.5 using和命名空间6.6 成员、方法和属性6.7 Random类1006.8 Timer类6.9 编程原则 6.10 编程陷阱6.11 语法要点6.12 新的语言元素6.13 新的IDE工具6.14 小结1016.1 简介 本章将分析C#库中类的使用。 通常,对象在术语上称为控件或组件。这两个术语实际上是通用的,但C#使用“控件”表示可在窗体上进行操作的项目(比如按钮)。1026.2 实例变量 程序员可以自由选择实例变量的名称。注意下面的代码是如何选择合适的局部变量名称的。 public class Form1 : System.Windows.Forms.Form pri
44、vate int n = 8; private void MyMethod() int n; n = 3; / 哪一个n? 尽管这两个变量在MyMethod中都允许访问(在作用域中),但原则上选择的是局部变量。实例变量(类级)n依然设置为8。返回目录1036.3 窗体构造函数 当C#系统运行程序时,它做的第一件事是调用窗体的构造函数。构造函数的作用是构建窗体并初始化它。(注意构造函数是在类的外部调用的,声明为public而不是private)。1046.4 TrackBar类 TrackBar是可以从工具箱中获得的GUI控件。它在本质上与字处理程序窗口边侧的滚动条类似,但TrackBar可以放
45、置在窗体的任何位置上。返回目录1056.5 using和命名空间 为了使用一个类,必须确保它已经通过关键字using导入程序中。不过,这有两种可能,一些最常用的命名空间将被自动导入到Windows应用程序中。这些命名空间是:SystemSystem.DrawingSystem.CollectionsSystem.ComponentModelSystem.Windows.FormsSystem.Data 1066.6 成员、方法和属性 类的成员是指它的属性和方法。属性包含的值表示类的实例的当前状态(比如标签中包含的文本),而方法是让实例完成某项任务,比如画一个圆。属性的使用方式与变量相似,可以在
46、它们之中放入新值并访问它们的当前值。 1076.7 Random类 Random类的实例需要显式声明与初始化。1086.8 Timer类 计时器的主要功能:计时器以固定的间隔产生嘀哒。每个嘀哒都是一个调用Tick方法的事件。Interval属性可设置为一个整数值,代表以毫秒表示的两次嘀哒之间的时间。使用Start和Stop方法启动或停止计时器。在程序中可放入任意多个具有不同时间间隔的计时器。返回目录1096.9 编程原则 除了利用现有组件,C#也可用来编写为其他人使用的GUI组件。在程序中集成这些组件很简单:通过一项菜单操作将它们添加到一个工程中。 1106.10 编程陷阱 如果声明了一个实例
47、,但是没有使用new对它进行初始化,就会产生System.NullReferenceException类型的运行时错误。运行时错误(即bug)比编译时错误更难解决;它们不容易发现,而且更严重,因为程序会停止执行。相信你一定遇见过此类错误! 返回目录1116.11 语法要点 实例变量在方法外声明,如下所示: private int yourVariable; private Random myVariable = new Random();实例变量在声明时就可以初始化,或者在方法内初始化。使用与变量相似的方式操作属性:可得到和设置它们的值。1126.12 新的语言元素 私有实例变量。使用new来
48、初始化。使用using导入命名空间。TrackBar、Random和Timer类。1136.13 新的IDE工具 组件托盘提供那些无法在窗体上可视显示的控件。1146.14 小结 C#系统中有大量可供使用的类,这也是理所应当的。除了工具箱中的控件类,还可以使用using以及适当的构造函数将它们集成到程序中。115第7章 选择 7.1 简介7.2 if语句7.3 if . else7.4 比较运算符7.5 与、或、非7.6 嵌套的if7.7 switch语句1167.8 布尔型变量7.9 编程原则7.10 编程陷阱7.11 语法要点7.12 新的语言元素7.13 小结1177.1 简介 在程序中
49、需要大量使用选择。计算机测试某个值,并且根据其结果,选择一个或另一个动作过程。只要程序面临动作选择并决定采取一种或是另一种动作,就可以使用if或switch语句来加以描述。 1187.2 if语句 if语句分为两个部分:测试条件当条件为真时执行的语句或语句序列 1197.3 ifelse 测试条件:条件为真时,要执行的语句或语句序列。条件为假时,要执行的语句或语句序列。1207.4 比较运算符 符号 意义 大于小于=等于!=不等于=大于或等于1217.5 与、或、非 &运算符指“与”。 |运算符指“或” 。 !运算符指“非” 。1227.6 嵌套的if 第二个if语句完全包含在第一个之中。这称
50、作嵌套。嵌套并不同于缩排,缩排只是令嵌套更加明显而已。 1237.7 switch语句 switch 语句是完成多个if语句的另一种方法。使用if语句,可以完成所需的任何操作,但在适当的情况使用switch将令程序更为简洁。 1247.8 布尔型变量 现在学习一种称为bool的新型变量,它只能保存值true或值false。单词bool、true和false都是C#中的保留关键字,不能用于其他用途。 1257.9 编程原则 通常计算机按顺序逐条执行指令。if语句指示计算机测试某个数据的值,然后根据测试结果选择一个动作。该选项有时称作选择(selection)。数据测试则称作条件(conditio
51、n)。if语句结束后,计算机继续按顺序执行指令。1267.10 编程陷阱 C#的规则是如果要执行的只有一条语句,则圆括号不是必不可少的。 1277.11 语法要点 第一种if语句的结构是:if (条件) 语句第二种if语句的结构是:if (条件) 语句else 语句128switch语句的结构是:switch (变量) case 值1: 语句 break; case 值2: 语句 break; default: 语句 break;默认部分是可选的。1297.12 新的语言元素 用于决策的控制结构: if, else switch, case, break, default比较运算符、=、!=、
52、=。逻辑运算符&、|和!。变量声明为bool,它的值既可以是true,也可以是false。1307.13 小结if语句允许程序员通过指令程序执行一个测试来控制动作顺序。根据此测试,计算机执行一个动作。if语句共有两种: if和if.elseswitch语句为执行多个测试提供了一个方便的方法。不过,switch语句只限于测试整数或字符串。bool变量可赋值为true或false,可以使用if语句来测试。131第8章 循环 8.1 简介8.2 while语句8.3 for语句8.4 与、或、非8.5 do . While8.6 嵌套循环1328.7 组合控制结构8.8 编程原则8.9 编程陷阱8.
53、10 语法要点8.11 新的语言元素8.12 小结1338.1 简介 前面已经知道计算机可以执行指令序列。现在来看一下如何数次重复指令序列。在程序设计语言中,重复(repetition)也叫做循环(loop)。 C#程序员通过两种方法执行循环:while和for。1348.2 while语句 while表示有条件地将内嵌语句执行0 遍或若干遍。如果条件为真,循环继续执行;如果条件为假,则循环结束, 1358.3 for语句 for语句的格式: for(initializer;condition;iterator) embedded-statement初始语句。它只在循环开始之前执行一次。条件。
54、在执行每次循环前都要进行测试。最后语句。它在每次循环的末尾执行,正好在每次循环结束之前。 1368.4 与、或、非符号 意义 &与|或!非1378.5 dowhile do-while 语句与while 语句不同的是它将内嵌语句至少执行一次或若干次。1388.6 嵌套循环嵌套循环是指循环中的循环。 1398.7 组合控制结构 事实上大部分程序都是由下面几部分构成:顺序结构。循环结构。选择结构。库方法的调用。程序员自己编写的方法的调用。 1408.8 编程原则 循环在程序设计中广泛使用。在C#中,可用的循环共有3种:while、for和do。 1418.9 编程陷阱在编写循环条件时一定要非常谨慎
55、。多循环一次或少循环一次是常见的错误。注意循环中的复合条件。如果循环体只有一条语句,则不必将它括在花括号内。但通常使用花括号更为安全。1428.10 语法要点在while循环中,对条件进行测试发生在每次循环开始之前。如果条件为真,循环继续;如果为假,循环终止。每次for循环的结尾都会执行“动作”。在每次do循环之后执行测试。1438.11 新的语言元素 循环的3种控制结构:whilefordo1448.12 小结编程中的重复称作循环。在C#中共有3种循环:while、for和do。如果想在循环语句中描述循环的主要特性,应该使用for。do用于需要在循环结尾测试条件,而且用于循环至少执行一次的情
56、况下。145第9章 调试9.1 简介 9.1.1 编译 9.1.2 链接 9.1.3 运行9.2 使用调试器 9.2.1 断点 9.2.2 单步9.3 关于调试的一个范例研究1469.4 常见错误 9.4.1 编译错误 9.4.2 运行时错误 9.4.3 逻辑错误9.5 编程陷阱9.6 新的IDE工具9.7 小结1479.1 简介 调试的目的是发现程序中的bug并改正它。bug就是程序中的错误。 bug的可能来源可分为三个阶段: 编译 链接 运行1489.1.1 编译 当键入程序时,C#开发环境执行全面的检查从而显示出程序中的错误,以防止它们继续保留下去。其中的一些错误在开始键入程序语句的时候
57、就会被加上下划线。这些错误在术语上称为编译错误。最常见的例子有未经声明的变量,引号或括号缺失等。 1499.1.2 链接 全部程序都利用库方法,有一些还利用程序员自己编写的类。仅当程序开始运行的时候才会链接这些类。但IDE在程序一键入时就会立即检查它们,以确保所有这些被调用的方法都确实存在,而且参数以正确的个数和类型进行匹配。在键入程序的时候,出错的地方也会被加上下划线。1509.1.3 运行 程序虽然运行,但第一次就像期望那样运行的情况很少。一些错误可被自动检测,然后告知程序员,比如试图用0除一个int数。其他错误则比较隐蔽,它们只是增加预想不到的行为。程序中可能有一个错误,也可能有多个错误
58、,因此调试是必不可少的一项工作。 1519.2 使用调试器 C#集成开发环境提供一个调试器。调试器是一个是一个命令行程序,帮助开发人员发现和调试基于CLR 的应用程序中的错误。它提供多种工具,其中包括单步和断点。1529.2.1 断点 断点是程序中止的地方,程序员可以使用调试器在程序中插入断点。通常,选择的最佳断点是在:方法的开头,以检验方法的所有参数无误。在方法刚被调用后(以检验方法正确地完成了工作)或在方法的末尾。1539.2.2 单步 调试器也允许每次执行程序的一行。这称为单步。 1549.3 关于调试的一个范例研究 本程序用来证明罗密欧(Remeo)与朱丽叶(Juliet)之间 的爱情
59、。出错代码如下: private void button1_Click(object sender, System.EventArgs e) string left = leftTextBox.Text; string right = rightTextBox.Text; left = right; right = left; leftTextBox.Text = left; rightTextBox.Text = right; 程序中只有一个方法,因此问题必定出在这个方法中。在方法开始的地方插入一个断点并单步执行这些语句,再将光标放在两个变量上(文本框的值)以显示它们的值。 1559.4 常
60、见错误 C#程序员很容易犯一些常见错误,主要是: 编译错误 运行时错误 逻辑错误 1569.4.1 编译错误 C#开发环境在用户键入程序时将对程序执行多种检查,并在它发现有问题的地方用波浪形蓝色下划线显示。这些问题在术语上叫做编译或语法错误。 下面是一些容易引起编译错误的地方:1 变量名2方法和属性名称3 转换1579.4.2 运行时错误 运行时错误是在程序运行时发生的错误,但只能在运行时由系统检测。常见的运行时错误: 算术异常 数组索引 使用不存在的对象 1589.4.3 逻辑错误 逻辑错误最难发现,因为它们随各个程序运行情况的不同而不同。因此没有检测这类错误的自动方式。但有两类错误是常见的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司股份合作协议书新
- 厂家电池采购合同
- 并购交易居间协议(与卖方财务顾问签)
- 保温材料公司劳务协议书
- 工地杂工承包合同范文
- 餐饮经营合作协议范文
- 工程学习心得体会
- 工程项目招标自查自纠报告
- 湖南省郴州市九校2023-2024学年高一下学期5月月考地理试题
- 4.1 陆地水体及其关系-河流的补给类型 中图版(2019)选择性必修1高二上学期
- 新能源汽车动力电池管理考核试卷
- 7.2 共建美好集体 课件-2024-2025学年道德与法治七年级上册(统编版2024)
- 2024年人教版初二物理(上册)期中考卷及答案(各版本)
- 水力发电可变成本优化
- 2024-2030年中国公路行业市场发展分析及前景展望与投资机会研究报告
- 2024年印度家用WiFi路由器行业状况及未来发展趋势报告
- 2024-2030年全球及中国半导体级磷烷行业现状动态及产销需求预测报告
- 2024年团务附有答案
- 2024版《供电营业规则》学习考试题库500题(含答案)
- 液压动力滑台的PLC控制新版专业系统设计
- 教职工防治学生欺凌岗位职责
评论
0/150
提交评论