《学习资料.ppt》由会员分享,可在线阅读,更多相关《学习资料.ppt(53页珍藏版)》请在三一办公上搜索。
1、C#实训教程,第1章 C#概 述,【学习概述】,本章介绍C#软件的来历、特点和开发环境,讲述数据类型、表达式、程序的运行和调试方法等基础知识,让读者学会安装Visual Studio 2008开发平台,熟悉开发环境和程序调试技巧,以一个结构完整、内容简单的C#程序作为实训项目,使读者能够读懂程序,学会使用开发平台编辑、编译并运行调试程序。,1.1认识C#,1.1.1C#的来历 微软公司在2000年6月份举行的“职业开发人员技术大会”上正式发布了VC#语言,其英文名为VC-Sharp。微软公司对其定义是:“VC#是一种类型安全的、现代的、简单的,由C和C+衍生出来的面向对象的编程语言,它是牢牢根
2、植于C和C+语言之上的,并可立即被C和C+开发人员所熟悉。1.1.2C#的特点1简洁的语法2面向对象设计3与Web的紧密结合4完整的安全性与错误处理5版本处理技术6灵活性和兼容性,1.2 C#开发环境,C#是Visual Studio 2008的一部分,同其他的.NET语言一样,都必须在.NET框架环境下运行。因此,要建立一个完整的C#开发平台,必须安装Visual Studio 2008和.NET Framework SDK(Software Development Kit,软件开发工具包)。,1.2 C#开发环境,1.2.1 安装Visual Studio 2008,图1.1 安装对话框,
3、1.2 C#开发环境,1.2.1 安装Visual Studio 2008,图1.3 选择安装方式,1.2 C#开发环境,1.2.1 安装Visual Studio 2008,图1.4 选择安装组件,1.2 C#开发环境,1.2.1 安装Visual Studio 2008,图1.5 安装过程,1.2 C#开发环境,1.2.1 安装Visual Studio 2008,图1.6 安装完成,1.2 C#开发环境,1.2.2 启动Visual Studio 2008,启动Visual Studio 2008一般有两种方法:一种是直接双击桌面上Visual Studio 2008图标启动;另一种是单
4、击“开始”“所有程序”“Microsoft Visual Studio 2008”“Microsoft Visual Studio 2008”进行启动。1起始页 首次启动Visual Studio 2008,首先会看到“选择默认环境设置”界面。选择“Visual C#开发设置”,单击按钮【启动Visual Studio】,图1.9 起始页,1.2 C#开发环境,1.2.2 启动Visual Studio 2008,2创建新程序 如果要创建一个C#程序,可以单击“项目”部分中的“新建项目”,或者选择“文件”“新建”“项目”,这将弹出如图1.10所示的对话框。在为项目选择名称和位置后,在“新建项目
5、”对话框中单击【确定】按钮。IDE(Integrated Development Environment,集成开发环境)的外观将发生改变,如图1.11所示。,图1.10 新建项目窗体,图1.11 创建新项目后的Visual Studio 2008环境,1.2 C#开发环境,1.2.2 启动Visual Studio 2008,3Visual Studio 2008窗口 Visual Studio 2008向用户提供了众多窗口,本书只简单介绍开发C#应用程序所必需的窗口。一般初次启动时,很多窗口都是在界面上可见的,如若是呈隐藏状态,可从“视窗”菜单中选择所需窗口进行访问。(1)解决方案资源管理器
6、(2)工具箱(3)属性窗口(4)帮助菜单,1.3 数据类型,C#数据类型主要有值类型和引用类型两大类。值类型包括简单类型、结构类型和枚举类型;引用类型包括类类型、数组类型、接口类型和委托类型。引用类型所存储的实际数据是当前引用对象的地址。对于引用类型,有可能两个变量引用相同的对象,因而可能出现对一个变量的操作影响到其它变量的情况。这里仅介绍值类型中的简单类型和结构类型,引用类型中的类类型和数组类型,其他数据类型在涉及到的项目中讲解。,1.3 数据类型,1.3.1 简单类型简单类型包括整数类型、浮点类型、小数类型、字符类型和布尔类型等。受计算机存储单元数量的限制,任何一种数据类型都有一定的取值范
7、围和精度。1整数类型2浮点类型3小数类型4字符类型,1.3 数据类型,表1.1 C#常用的转义符,1.3 数据类型,5布尔类型布尔类型数据用于表示逻辑真或逻辑假,其类型标识符是bool。,1.3 数据类型,1.3.2 结构类型结构类型是把各种不同类型的数据组合在一起形成的组合类型,是用户可以自定义的数据类型。例如一个学生的个人记录可能包括:学号、姓名、性别、年龄、电话,这些信息的类型不同,可以使用结构类型存储。,1.3 数据类型,1结构的声明结构类型需要先声明后使用,声明结构类型要使用struct关键字,语法格式如下:struct 标识符/结构成员定义,1.3 数据类型,2结构成员的访问结构成
8、员可分为两类:一类是实例成员,另一类是静态成员。,1.3 数据类型,【例1-2】定义一个结构类型用于存放平面坐标的X轴和Y轴数据,并通过访问结构成员显示该坐标。程序代码如下:public struct CoOrds public int x,y;public CoOrds(int p1,int p2)x=p1;y=p2;class TestCoOrdsNoNew static void Main()CoOrds coords1;coords1.x=10;coords1.y=20;System.Console.Write(CoOrds 1:);System.Console.WriteLine(x
9、=0,y=1,coords1.x,coords1.y);输出为:CoOrds 1:x=10,y=20,1.3 数据类型,1.3.3 类类型类类型是C#中功能最为强大的数据类型。像结构一样,类也定义数据的类型和行为。,1.3 数据类型,1类的声明类类型的声明与结构类型的声明很类似,不同的是类的声明要使用class关键字,其格式如下:类修饰符 class 类名类的成员;,1.3 数据类型,2类成员的访问在C#中,按照类的成员是否为函数将其分为两大类,一种以函数形式出现,称为成员函数,另一种不以函数形式体现,称为成员变量。,1.3 数据类型,【例1-3】类成员的声明与访问。using System;
10、class Kid private int age;private string name;public Kid()name=N/A;public Kid(string name,int age)this.name=name;this.age=age;public void PrintKid()Console.WriteLine(0,1 years old.,name,age);,class MainClass static void Main()Kid kid1=new Kid(Craig,11);Kid kid2=new Kid(Sally,10);Kid kid3=new Kid();C
11、onsole.Write(Kid#1:);kid1.PrintKid();Console.Write(Kid#2:);kid2.PrintKid();Console.Write(Kid#3:);kid3.PrintKid();程序结果:Kid#1:Craig,11 years old.Kid#2:Sally,10 years old.Kid#3:N/A,0 years old.在此例中声明了两个类,一个是Kid类,包含两个私有字段(name和age)和两个公共方法。第二个类MainClass用来包含Main。,1.3 数据类型,1.3.4 数组类型数组类型是把一些类型相同的数据组合在一起形成的
12、组合类型。,1.3 数据类型,1数组的定义数组在使用前必须先定义。定义一维数组的格式如下:数组类型 数组名:,1.3 数据类型,2数组的初始化在定义数组后,必须对其进行初始化才能使用。初始化数组有两种方法:动态初始化和静态初始化。,1.3 数据类型,3数组元素的访问定义一个数组,并对其进行初始化后,就可以访问数组中的元素了。在C#中是通过数组名和下标值来访问数组元素的。,1.3 数据类型,【例1-4】定义、初始化和访问数组。using System;class DeclareArraysSample public static void Main()/一维数组 int numbers=new
13、int5;/多维数组 string,names=new string5,4;/数组的数组(交错数组)byte scores=new byte5;/创建交错数组 for(int i=0;i scores.Length;i+)scoresi=new bytei+3;,/打印每行的长度 for(int i=0;i scores.Length;i+)Console.WriteLine(Length of row 0 is 1,i,scoresi.Length);程序的结果:Length of row 4 is 8Length of row 0 is 4Length of row 1 is 5Lengt
14、h of row 2 is 6Length of row 3 is 7,1.4 表达式,表达式是由变量、常数和运算符组成的算式,是各种程序设计语言中最基本的数据运算或数据处理过程。单个常数或变量是表达式的特殊情况。,1.4 表达式,1.4.1 标识符标识符是一串字符,在程序中用来代表一个名字,定义一个变量、一个类或生成一个对象时,其名字就是标识符。,1.4 表达式,1.4.2 常量常量是在程序运行过程中其值不变的量。通过关键字const来声明常量,格式如下:const 类型标识符 常量名=表达式,1.4 表达式,1.4.3 变量变量是程序运行过程中用于存放数据的存储单元,其值在程序的运行过程中
15、可以改变。C#规定,任何变量必须先定义后使用。1变量的定义一次可以定义一个或多个同类型的变量,其格式如下:类型标识符 变量名1,变量名2,,1.4 表达式,2变量的赋值变量本身只是一个能保存某种类型具体数据的内存单元(这里所说的“内存单元”不一定以字节为单位),对于程序而言,可以使用变量名来访问这个具体的内存单元。变量的赋值,就是将数据保存到变量内存单元的过程。在C#中,给一个变量值的格式如下:变量名=表达式;,1.4 表达式,1.4.4 运算符运算符是表示各种不同运算的符号。,1.5 C#程序的运行与调试,1.5.1 第一个C#程序使用Visual Studio 2008提供的项目模板创建一
16、个控制台应用程序,这个程序在Windows窗口显示“我的第一个程序”。,1.5 C#程序的运行与调试,1.5.2 程序的结构一个简单的C#程序的基本结构为:命名空间、类、Main()、注释方法等。下边就结合上例中的程序来分析C#应用程序的结构。,1.5 C#程序的运行与调试,1命名空间在上节的程序中,第一条语句using System语句表示导入System命名空间。Console.WriteLine(我的第一个程序)语句中的Console是System命名空间所包含的系统类库中定义好的一个类,代表系统控制台,即字符界面的输入和输出。,1.5 C#程序的运行与调试,2类C#要求其程序中的每一个
17、元素都要属于一个类。上节程序的第二行class Welcome声明了一个类,类的名字叫Welcome,这个程序的功能就是依靠它来完成的。,1.5 C#程序的运行与调试,3Main()方法C#程序入口从下面的代码开始:static void Main(),1.5 C#程序的运行与调试,4注释程序编写过程中常常要对程序中比较重要或需要注意的地方做些说明,但这些说明又不参与程序的执行。通常是采用注释的方法将这些书名写在程序中。,1.5 C#程序的运行与调试,1.5.3 程序的调试设置和取消断点的方法如下:(1)单击某代码行左边的灰色区域,设置断点,再次单击则取消断点。(2)右击某代码行,在弹出的菜单
18、中,选择“断点”“插入断点”或者“删除断点”。(3)鼠标指向某代码行,单击键进行设置或取消断点。,1.5 C#程序的运行与调试,【例1-5】编写一个简单的windows应用程序,实现简单的交互。(1)新建VC#项目,选择模板中的windows应用程序。(2)项目名称为“HeyGuy”。从工具箱中为窗体安放Button控件和textbox控件。并设置控件属性。(3)左键双击“解决方案资源管理器”中的“Program.cs”,修改代码为:static void Main()MessageBox.Show(请输入你的姓名);Application.EnableVisualStyles();Appli
19、cation.SetCompatibleTextRenderingDefault(false);Application.Run(new Form1();(4)双击【确定】按钮,为其添加事件处理程序,添加的程序代码如下:private void button1_Click(object sender,System.EventArgs e)string strName;strName=textBox1.Text;MessageBox.Show(Hi+strName+!);如果有错误,则会弹出一个如图1.17所示的提示框。无论选择“是”还是“否”,都会在窗口界面的下部出现一个任务列表,显示所有的输出
20、错误,通过双击任务可以对其进行修改,选择后这些错误会自动隐藏在下部,通过单击表头可以打开。利用断点调试程序时,运行一次软件后,会自动停止在断点处,接着参用上述方法继续执行,反复多次直到修改完所有错误为止。,1.5 C#程序的运行与调试,图1.17 提示框,1.5 C#程序的运行与调试,在【例1-5】中,首先找到存在错误的代码行strName=textBox1.Text;设置该代码行为断点,如图1.18所示。,图1.18 设置断点,1.5 C#程序的运行与调试,设置有断点的行代码显示为红色,当鼠标移动到红色圆点位置时,提示该断点代码行的位置信息。运行程序时,运行到设置断点的代码行,程序中断,代码
21、行显示为黄色,红色圆点上会有一个箭头,如图1.19所示。,图1.19 程序运行到断点,1.5 C#程序的运行与调试,继续使用以上方式运行程序,完成程序的调试。在【例1-5】中,如果代码误输入为:private void button1_Click(object sender,System.EventArgs e)string strName;strName=textBox.Text;MessageBox.Show(Hi+strName+!);运行程序,弹出如图1.20所示错误提示。,图1.20 错误提示,1.5 C#程序的运行与调试,错误显示已成功生成过,选择【是】,直接调用上次成功的生成;选
22、择【否】,跳出运行,错误列表中显示的错误信息如图1.21所示。,图1.21 错误信息,1.6 实训:调试C#程序,【例1-6】编写一个简单的windows应用程序,调试并运行程序。(1)新建VC#项目,选择模板中的windows应用程序。(2)项目名称为“Test1”。在“工具箱”的“组件”中选择“Timer”控件。(3)双击Form1窗体,为其添加事件处理程序,程序如下:private void Form1_Load(object sender,EventArgs e)this.timer1.Enabled=true;this.Opacity=0;(4)双击Timer1窗体,为其添加事件处理
23、程序,程序如下:private void timer1_Tick(object sender,EventArgs e)if(this.Opacity 1)this.Opacity=this.Opacity+0.05;else this.timer1.Enabled=false;,1.6 实训:调试C#程序,(5)调试并运行程序。(6)运行结果是一个渐显的窗体。其中运行过程中的一个画面如图1.22所示。,图1.22 渐显的窗体,1.6 实训:调试C#程序,【例1-7】编写一个windows应用程序,调试并运行程序,找出错误。(1)新建VC#项目,选择模板中的windows应用程序。(2)项目名称
24、为“Test2”。添加三个TextBox、两个Label和一个Button控件,如图1.23所示。,图1.23 桌面布局,1.6 实训:调试C#程序,(3)双击Button1窗体,为其添加事件处理程序,程序如下:private void button1_Click(object sender,EventArgs e)Double a;a=Convert.ToDouble(textBox1.Text)/Convert.ToDouble(textBox2.Text);textBox.Text=Convert.ToString(a);(4)调试并运行程序。发现错误如图1.24所示。(5)修改错误并运
25、行。,图1.24 显示的出错信息,1.7 习题,1填空(1)Visual Studio 2008开发环境由_和_构成。(2)C#是一种由_和_衍生出来的面向对象的编程语言。(3)C#的目的就是综合Visual Basic的_和C+的_。(4)通常采用设置_来调试程序的。2选择(1)类库是一个由.NET Framework SDK中包含的()组成的库。A类 B值类型 C接口 D命名空间(2)公共语言运行库(CLR)是.NET Framework的基础,提供诸如()等核心服务。A内存管理 B开发流程 C线程管理 D远程处理(3)解决方案资源管理器的功能是()A编写源代码 B显示项目中的所有文件和项目设置C用于显示选定目标对象的属性 D用于显示程序在编译过程中产生的错误(4)选出不属于值类型的是()Achar、int和float B枚举类型 C引用类型 D结构类型(5)无符号整数类型有()Abyte Bushort Cuint Dulong3C#特点有哪些?4注释方法有那些,需要注意什么?5简述设置和取消断点的方法。,