版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、01 基本数据类型基本数据类型02 常量和变量常量和变量 03 表达式与运算符表达式与运算符 04 选择语句选择语句 05 循环语句循环语句 06 跳跳转语句转语句 07 数组数组 1 基本数据类型基本数据类型 基本数据类型 数据类型 值类型 简单类型复合类型 整数类型 浮点类型 布尔类型 字符类型 枚举类型 结构类型 引用类型 预定义引用类型自定义引用类型 object string 数组 类 接口 委托 值类型直接存储值值类型直接存储值 age ageage2 int age = 30;int age2 = age; ageage2 age2 = 35; 值类型 整数类型 int i =
2、10; int j = -10; uint m = 10; uint n = -10; 示示 例例 类型类型说明(说明(8 8位等于位等于1 1字节)字节)范围范围 sbyte8位有符号整数-128127 short16位有符号整数-3276832767 int32位有符号整数-21474836482147483647 long64位有符号整数-92233720368547758089223372036854775807 byte8位无符号整数0255 ushort16位无符号整数065535 uint32位无符号整数04294967295 ulong64位无符号整数0184467440737
3、09551615 类类 型型说说 明明范范 围围 float精确到7位数1.510-453.41038 double精确到1516位数5.010-3241.710308 decimal精确到28位数1.010-287.91028 float theMySum = 9.27f; float theMuSums = 1.12F; double myDou = 927d; double mudou = 112D; decimal money = 1.12m; 或者 decimal money = 1.12M; 浮点类型 bool类型 布尔类型主要用来表示true/false值,C#中定义布尔类型时,
4、需要使用bool关键字 。例如,下面代码定义一个布尔类型的变量: bool x = true; bool类型的默认值是类型的默认值是false。 C#语言中,使用语言中,使用char/Char类定义字符,并且字符只能类定义字符,并且字符只能 用单引号括起来用单引号括起来 char ch1 = m; Char ch1 = m; M 5 男 bool5.2 “ch” 检查下面这些是否是合法的字符检查下面这些是否是合法的字符 字符类型 语法语法 student1 student1.Name = “m” Name =“m” 引用类型存储对值的引用引用类型存储对值的引用 student1studnet2
5、 Name =“n” student2.Name = “n”student2 = student1 引用类型 Name= “m” 两个变量都发生 变化 student1studnet2 .NET中预定义的两种引用类型 类型类型说明说明 object object类型在.NET Framework中是Object的别名。在C#的统 一类型系统中,所有类型(预定义类型、用户定义类型、 引用类型和值类型)都是直接或间接从Object继承的 stringstring类型表示零或更多Unicode字符组成的序列 值类型与引用类型的区别 在这里在这里在哪里在哪里 2 常量和变量常量和变量 定义:定义:不能
6、被改变不能被改变的的量量 32 368 0 x2F 3.14 3.14F 3.14M A “Hello World” ture false 常量 const double PI = 3.1415926 ; 常量常量的的分类分类 字面常量 符号常量 const 引入 在数学中,我们对变量的概念有一定的了解和认识,如在数学中,我们对变量的概念有一定的了解和认识,如y=xy=x2 2, 其中,其中,x x、y y都是变量。都是变量。 那么,在那么,在C#C#中的变量具体是指一个什么概念呢?其实,一个变中的变量具体是指一个什么概念呢?其实,一个变 量就是存储区(量就是存储区(内存内存)中的一个存储单元
7、。)中的一个存储单元。 变量 变量类型变量类型 变量名变量名 = 数值;数值; 变量类型变量类型 变量名;变量名; 变量名变量名 = 数值;数值; int money = 1000; int money; money = 1000 ; 变量的声明 变量类型变量类型 变量名变量名1,变量名变量名2,变量名变量名n; int money1,money2,moneyn; 语法语法 1、字母 2、下划线_ 首字母 任意多的: 1、数字 2、字母 3、下划线_ 其余部分 变 量 名 C#语言中,变量命名要符合一定规则语言中,变量命名要符合一定规则 money,score,name,sex 变量基本要求:
8、 简短且能清楚地表明变量的作用,通常第一个单词的首字母小写,其后单词的 首字母大写。例如:myScore 变量的命名规则 变量的初始化 赋值运算符 将右边的数赋值给左 边的变量 变量初始化的3种方法 单独初始化变量 int sum; sum = 368; int sum = 368; int a,b,c,d,e; a = b = c = d = e = 0; 声明时初始化变量 同时初始化多个变量 3 表达式与运算符表达式与运算符 什么是表达式 引入 表达式表达式是由运算符和操作数组成的。是由运算符和操作数组成的。+ +、- -、* *和和/ /等都是运算符,操等都是运算符,操 作数作数包括常量
9、包括常量、变量和表达式等、变量和表达式等。 1 4 = 4x * y = z 符号 数 运算符 操作数 按运算符功能按运算符功能 按操作数个数按操作数个数 单目运算符单目运算符 双目运算符双目运算符 三目运算符三目运算符 算术运算符算术运算符 自增自减运算符自增自减运算符 赋值运算符赋值运算符 关系运算符关系运算符 逻辑运算符逻辑运算符 位运算符位运算符 条件运算符等条件运算符等 运算符的分类 主要内容 算术运算符算术运算符 自增自减运算符自增自减运算符 赋值运算符赋值运算符 关系运算符关系运算符 逻辑运算符逻辑运算符 位运算符位运算符 移位运算符移位运算符 条件运算符条件运算符 0102 0
10、304 0506 0708 运算符的优先级与结合性运算符的优先级与结合性09 表达式中的类型转换表达式中的类型转换09 操作数 操作数运算符 算术运算符 基本的算术运算基本的算术运算 class Test public static void Main(String args) double i = -6.5; int j = -2; double result = i % j; Console.WriteLine(result); 使用%运算符时的注意事项 使用使用%运算符时,返回运算符时,返回结果的符号与结果的符号与左左操作数相同操作数相同 - 0.5 b = a+; 相当于: b = a
11、; a+; 先取值,后自增 b = -a; 相当于: -a; b = a; 先自减,后取值 自增自减运算符 自自增自减运算符不能作用于常量或者表达式增自减运算符不能作用于常量或者表达式 =量值 做读取操作,可 以是常量、表达 式 做写的操作, 被赋予等号右 侧的值 简单赋值运算符 a += 3 a ; 简称简称含义含义运算符运算符数目数目结合性结合性 单单目+, -, ! ,单目 算算术 *, /, %双目 +, -双目 位移位双目 关关系 , =, , 100) 100) break; break; sum sum += += i i; ; 修改修改 (1)break语句通常应用在switc
12、hswitch、whilewhile、dowhiledowhile或或forfor循环循环中 (2)break一般与if语句搭配使用,用来跳出循环跳出循环 “死 循环” continue的使用 (1)continue语句通常应用在whilewhile、dowhiledowhile或或forfor循环循环中 (2)continue一般与if语句搭配使用,用来开始一次新的循环开始一次新的循环 ?2+4+6+8+100=? intint i,sumi,sum=0;=0; for (for (i i = 1; = 1; i i = 100; = 100; i i+)+) if( i%2=1) if(
13、i%2=1) continue; continue; sum += sum += i i; ; break和continue的区别 表达式 2 while 循环后 面的语句 假 真 语句组 表达式 1 语句组 假 表达式 2 while 循环后 面的语句 假 真 语句组 表达式 1 语句组 假 breakcontinue 使用使用goto语句实现语句实现1到到100的累加。的累加。 goto语句的使用 goto goto LableLable; ; Console.WriteLineConsole.WriteLine(“the message before Label”);(“the mess
14、age before Label”); LableLable: : Console.WriteLineConsole.WriteLine(“the Label message”);(“the Label message”); goto 标签;语法语法 改变代码 执行顺序 goto使用说明 goto语句可以忽略当前程序的逻辑,直接使程序跳转到忽略当前程序的逻辑,直接使程序跳转到 某一语句执行某一语句执行,有时非常方便,但是也正是由于goto语句的 这种特性,在程序开发中一般不主张使用goto语句, 以免造 成程序流程的混乱,使理解和调试程序都产生困难。 7 数组数组 主要内容 一维数组一维数组
15、01 多维数组多维数组 02 不规则数组不规则数组 03 数组与数组与System.ArraySystem.Array 04 常用数组操作常用数组操作 05 使用使用foreachforeach语句遍历数组语句遍历数组 06 一维数组 引入 一维数组是具有相同数据类型的一组数据的线性集合 ,在程序中可以通过一维数组来完成一组相同数据类型数 据的线性处理。 type arrayName;语法语法 一维数组初始化的3种方法 初始化一维数组为默认值 int arr =new int5; int arr=new int51,2,3,4,5; string arrStr=Sun, Mon, Tue, W
16、ed, Thu, Fri, Sat; 初始化一维数组为指定值 省略长度初始化数组 多维数组 引入 多维数组是指可以用多个下标访问的数组,声明时, 方括号内加逗号,就表明是多维数组,有n个逗号,就是 n+1维数组。 type, arrayName;语法语法 数组索引 多维数组初始化的2种方法 初始化二维数组为默认值 int, arr =new int3,2; int, arr=new int3,21,2,3,4,5,6; 初始化二维数组为指定值 不规则数组 int a = new int3; a0 = new int5; a1 = new int3; a2 = new int4; 语法语法 数组
17、与System.Array 方法方法说明说明 Copy将数组中的指定元素复制到另一个Array中 CopyTo 从指定的目标数组索引处开始,将当前一位数组 中的所有元素复制到另一个一位数组中 Exists判断数组中是否包含指定的元素 GetLength获取Array的指定维中的元素数 GetValue获取Array中指定位置的值 Reverse反转一维Array中元素的顺序 SetValue设置Array中指定位置的元素 Sort对一维Array数组元素进行排序 C#中的数组是由System.Array类派生而来的引用对象。 数组常用操作 一维数组的输入与输出 使用单层循环实现 使用双层嵌套循
18、环实现 排序算法:冒泡排序等 二维数组的输入与输出 数组的排序 使用foreach语句遍历数组 foreach(【类型】 【迭代变量名】 in 【集合表达式】) 语句 语法语法 string strNames = 进货管理, 销售管理, 库存管理, 系统设置 ; foreach (string str in strNames) Console.Write(str + ); 示示 例例 小结小结 本章本章对对C#C#语言基础知识进行了详细讲解,学习本章时,读语言基础知识进行了详细讲解,学习本章时,读 者应该重点掌握变量和常量的使用、各种运算符的使用、流者应该重点掌握变量和常量的使用、各种运算符的
19、使用、流 程控制语句的使用以及数组的基本操作。本章是程控制语句的使用以及数组的基本操作。本章是C#C#程序开发程序开发 的基础,因此,我们一定要熟练掌握。的基础,因此,我们一定要熟练掌握。 上机指导上机指导 通过本章所学尝试制作一个简单的客车售票系统,假设客车的坐位数是9行4列,使用一个二维数组 记录客车售票系统中的所有座位号,并在每个座位号上都显示“【有票】”,然后用户输入一个坐标位 置,按回车键,即可将该座位号显示为“【已售】”。 第第3章章 面向对象编程基础面向对象编程基础 01 面向对象概念面向对象概念 02 类类 03 方法方法 1 面向对象概念面向对象概念 对象、类、实例化 对象=
20、(算法+数据结构) 程序=(对象+对象+) 大雁 一对 翅膀 . 飞行觅食跳跃. 大雁 一对 翅膀 . 飞行觅食跳跃. 大雁类 实例化一个对象 一双脚 一只嘴 一只嘴一双脚 封装封装 面向对象程序设计语言的三大原则 类 为用户提供对象 的属性和行为的 接口 用户通过这些接口使用这 些类 , 无须知道这些类内 部是如何构成的 。 不能操 作类中的内部数据 类将内部数据隐藏 继承继承 面向对象程序设计语言的三大原则 多态多态 面向对象程序设计语言的三大原则 继承中提到了父类和子类,其实将父类对象应用于子类的特征 就是多态。依然以图形类来说明多态,每个图形都拥有绘制自己的 能力,这个能力可以看作是该
21、类具有的行为,如果将子类的对象统 一看作是父类的实例对象,这样当绘制任何图形时,可以简单地调 用父类也就是图形类绘制图形的方法即可绘制任何图形,这就是多 态最基本的思想。 2 类类 主要内容 类的概念类的概念 类的声明类的声明 类的成员类的成员 构造函数和析构函数构造函数和析构函数 对象的创建及使用对象的创建及使用 thisthis关键字关键字 类与对象的关系类与对象的关系 0102 0304 0506 07 类是一种数据结构,它可以包含数据成员(常量和域)、函数成员 (方法、属性、事件、索引器、运算符、构造函数和析构函数)和嵌套类 型。 类(class)实际上是对某种类型的对象定义变量和方法
22、的原型,它表示 对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。 类的概念 类修饰符类修饰符 class 类名类名 类的声明 public class Car public int number; public string color; private string brand; 语法语法 类的成员 字段 常量或者变量 enum 枚举名 list1=value1, list2=value2, list3=value3, listN=valueN, 【修饰符】【类型】【属性名】 get get访问器体 set set访问器体 枚举 属性 构造函数和析构函数 构造函数 构造函数是
23、在创建给定类型的对象时执行的类方法,构造函数具有与类 相同的名称,它通常初始化新对象的数据成员。 public Program() z = x + y; 析析构函数是以类名加构函数是以类名加来命名的。来命名的。.NETFramework类库有垃圾回收功能类库有垃圾回收功能, 当当某个类的实例被认为是不再有效,并符合析构条件时,某个类的实例被认为是不再有效,并符合析构条件时,.NETFramework 类类库的垃圾回收功能就会调用该类的析构函数实现垃圾回收库的垃圾回收功能就会调用该类的析构函数实现垃圾回收。 Program()/析构函数 Console.WriteLine(析构函数自动调用);
24、析构函数 对象的创建及使用 对象的创建 Test test=new Test(); Test test=new Test(a); cStockInfo stockInfo = new cStockInfo(); stockInfo.FullName = 笔记本电脑; stockInfo.ShowGoods(); 访问对象的属性和行为 对象的引用 Book book; 或: Book book=new Book(); 对象的销毁 对象 e 超过其作用范围,将销毁 this关键字 C#语言中可以使用this关键字来代表本类对象的 引用,this关键字被隐式地用于引用对象的成员变量 和方法。 pri
25、vate void setName(String name) =name; 类与对象的关系 类是具有相同或相似结构、操作和约束规则的对 象组成的集合,而对象是某一类的具体化实例,每一 个类都是具有某些共同特征的对象的抽象。 3 方法方法 主要内容 方法的声明方法的声明 方法的参数方法的参数 静态方法与实例方法静态方法与实例方法 方法的重载方法的重载 01 02 03 04 方法的声明 修饰符修饰符 返回值类型返回值类型 方法名方法名(参数列表参数列表) /方法的具体实现;方法的具体实现; public void ShowGoods() Console.WriteLine(库存
26、商品名称:库存商品名称:); Console.WriteLine(FullName); 语法语法 方法的参数 值参数 值参数就是在声明时不加修饰的参数,它表明实参与形参之间按值传递。由于是 值类型的传递方式,所以,在方法中对形参的修改并不会影响实参。 private int Add(int x, int y) x = x + y; return x;/返回x ref参数使形参按引用传递,其效果是:在方法中对形参所做的任何更改都将反映 在实参中。如果要使用ref参数,则方法声明和方法调用都必须显式使用ref关键字。 private int Add(ref int x, int y) x = x
27、+ y; return x;/返回x ref参数 方法的参数 out参数 out关键字用来定义输出参数,它会导致参数通过引用来传递,使用out关键字定义 的参数,不用进行赋值即可使用。如果要使用out参数,则方法声明和方法调用都必 须显式使用out关键字。 private int Add(int x, int y,out int z) z = x + y; return z;/返回z 方法的参数 params参数 声明方法时,如果有多个相同类型的参数,可以定义为params参数。params参数是 一个一维数组,主要用来指定在参数数目可变时所采用的方法参数。 private int Add(p
28、arams int x) int result = 0; for (int i = 0; i x.Length; i+) result += xi; return result; 静态方法与实例方法 静态方法 静态方法不对特定实例进行操作,在静态方法中引用this会导致编译错误,调用 静态方法时,使用类名直接调用。 public static int Add(int x, int y) return x + y; static void Main(string args) Console.WriteLine(0+1=2, 23, 34, Program.Add(23, 34); Console
29、.ReadLine(); 静态方法与实例方法 实例方法是对类的某个给定的实例进行操作,使用实例方法时,需要使用类的对象 调用,而且可以用this来访问该方法。 public int Add(int x, int y)加 return x + y; static void Main(string args) Program pro = new Program(); Console.WriteLine(0+1=2, 23, 34, pro.Add(23, 34); Console.ReadLine(); 实例方法 方法的重载 方法重载是指方法名相同,但参数的数据类型、 个数或顺序不同的方法。 pu
30、blic static int Add(int x, int y) return x + y; public double Add(int x, double y) return x + y; public int Add(int x, int y, int z) return x + y + z; 小结小结 本章本章主要对面向对象编程的基础知识进行了详细讲解,具体讲解时,主要对面向对象编程的基础知识进行了详细讲解,具体讲解时, 首先介绍了对象、类与实例化这首先介绍了对象、类与实例化这3 3个基本概念,以及面向对象程序设计的个基本概念,以及面向对象程序设计的 3 3大基本原则;然后重点对类和对
31、象,以及方法的使用进行了详细讲解。大基本原则;然后重点对类和对象,以及方法的使用进行了详细讲解。 学习本章内容时,一定要重点掌握类与对象的创建及使用,并熟练掌握学习本章内容时,一定要重点掌握类与对象的创建及使用,并熟练掌握 常见的几种方法参数类型,以及静态方法与实例方法的主要区别。常见的几种方法参数类型,以及静态方法与实例方法的主要区别。 上机指导上机指导 在进销存管理系统中,商品的库存信息有很多种类,比如商品型号、商品名 称、商品库存量等。在面向对象编程中,这些商品的信息可以存储到属性中,然 后当需要使用这些信息时,再从对应的属性中读取出来。这里要求定义库存商品 结构,并输出库存商品的信息。
32、 第第4章章 面向对象编程面向对象编程进阶进阶 01 类的继承与多态类的继承与多态02 结构与接口结构与接口 03 集合与索引器集合与索引器 04 异常处理异常处理 05 委托和匿名方法委托和匿名方法 06 事件事件 07 预处理指令预处理指令08 泛型泛型 1 类的继承与多态类的继承与多态 继承 继承的基本思想是基于某个基类的扩展,制定出一 个新的派生类,派生类可以继承基类原有的属性和方法 ,也可以增加原来基类所不具备的属性和方法,或者直 接重写基类中的某些方法。 class Test2: Test Test Test()构造方法 protected void doSomething() p
33、rotected Test doIt() Test2 Test2()构造方法 public void doSomethingnew() public void doSomething() protected Test2 doIt() 父类子类 继承 base关键字 base关键字用于从派生类中访问基类的成员,它主要有两种使用形 式,分别如下: 调用基类上已被其他方法重写的方法。 指定创建派生类实例时应调用的基类构造函数。 基类 public Goods(string tradecode, string fullname) TradeCode = tradecode; FullName = fu
34、llname; 派生类 public JHInfo(string jhid, string tradecode, string fullname) : base(tradecode, fullname) JHID = jhid; 继承中的构造函数和析构函数 多态是面向对象编程的基本特征之一,它使得派生类的实例可以直接赋 予基类的对象,然后直接就可以通过这个对象调用派生类的方法。C#中,类 的多态性是通过在派生类中重写基类的虚方法来实现的。 多态 基类 public virtual void Move() Console.WriteLine(0都可以移动, Name); 派生类 public o
35、verride void Move() Console.WriteLine(0在铁轨上行驶,Name); 抽象类与抽象方法 如果一个类不与具体的事物相联系,而只是表达一种抽象的概 念或行为,仅仅是作为其派生类的一个基类,这样的类就可以声明 为抽象类,在抽象类中声明方法时,如果加上abstract关键字,则 为抽象方法,抽象方法不提供具体的实现。 public abstract class TestClass public abstract void AbsMethod();/抽象方法 密封类与密封方法 为了避免滥用继承,C#中提出了密封类的概念。密封类可以用来限制 扩展性,如果密封了某个类,则
36、其他类不能从该类继承;如果密封了某个 成员,则派生类不能重写该成员的实现。 如果类的方法声明中包含sealed修饰符,则称该方法为密封方法。密封 方法只能用于对基类的虚方法进行实现,因此,声明密封方法时,sealed 修饰符总是和override修饰符同时使用。 public sealed class JHInfo : Information /密封类 /将基类的虚方法重写,并设置为密封方法 public sealed override void ShowInfo() Console.WriteLine(进货信息:n + Code + + Name); 2 结构与接口结构与接口 结构是一种值类
37、型,通常用来封装一组相关的变量,结构中可以包括 构造函数、常量、字段、方法、属性、运算符、事件和嵌套类型等。结构 实际是将多个相关的变量包装成为一个整体使用。在结构体中的变量,可 以是相同、部分相同,或完全不同的数据类型。 C#中使用struct关键字来声明结构。 结构 结构修饰符结构修饰符 struct 结构名结构名 语法语法 修饰符修饰符 interface 接口名称接口名称 :继承的接口列表:继承的接口列表 接口内容接口内容; 接口 语法语法 接口提出了一种契约(或者说规范),让使用接口的程序设计人员必 须严格遵守接口提出的约定。接口可以包含方法、属性、索引器和事件作 为成员,但是并不能
38、设置这些成员的具体值,也就是说,只能定义。 C#中声明接口时,使用interface关键字。 接口的实现与继承 定义 interface Information string Code get; set; void ShowInfo(); public class JHInfo : Information/继承接口,定义进货类 string code = ; string name = ; public string Code/实现编号属性 get return code; set code = value; public void ShowInfo()/实现方法,输出进货信息 Console
39、.WriteLine( Code + + Name); 实现 说明:说明:接口接口中的成员默认中的成员默认是是 公共公共的,因此,不允许的,因此,不允许加加 访问访问修饰符。修饰符。 显式接口成员实现 如果类实现两个接口,并且这两个接口包含具有相同签名的 成员,那么在类中实现该成员将导致两个接口都使用该成员作为 它们的实现,然而,如果两个接口成员实现不同的功能,那么这 可能会导致其中一个接口的实现不正确或两个接口的实现都不正 确,这时可以显式地实现接口成员,即创建一个仅通过该接口调 用并且特定于该接口的类成员。显式接口成员实现是使用接口名 称和一个句点命名该类成员来实现的。 抽象类与接口 抽象
40、类和接口的区别主要有以下几点: 它们的派生类只能继承一个基类,即只能直接继承一个抽象类, 但可以继承任意多个接口。 抽象类中可以定义成员的实现,但接口中不可以。 抽象类中可以包含字段、构造函数、析构函数、静态成员或 常量等,接口中不可以。 抽象类中的成员可以是私有的(只要它们不是抽象的)、受保护 的、内部的或受保护的内部成员(受保护的内部成员只能在应用 程序的代码或派生类中访问),但接口中的成员默认是公共的, 定义时不能加修饰符。 3 集合与索引器集合与索引器 集合 语法语法 集合类似于数组,是一组组合在一起的类型化对象,可以通过遍历获取其 中的每个元素。 接口接口说明说明 ICollecti
41、on定义所有非泛型集合的大小、枚举数和同步方法 IComparer公开一种比较两个对象的方法 IDictionary表示键/值对的非通用集合 IDictionaryEnumerator枚举非泛型字典的元素 IEnumerable公开枚举数,该枚举数支持在非泛型集合上进行简单迭代 IEnumerator支持对非泛型集合的简单迭代 IList表示可按照索引单独访问的对象的非泛型集合 ArrayList集合 语法语法 ArrayList类是一种非泛型集合类,它可以动态的添加和删除元素。ArrayList 类相当于一种高级的动态数组,它是Array类的升级版本,但它并不等同于数 组。 ArrayLis
42、t list = new ArrayList(); list.Add(笔记本电脑); list.Add(华为荣耀4X); list.Add(iPad平板电脑); foreach (string name in list) Console.WriteLine(name); 索引器 【修饰符】 【类型】 this【参数列表】 get get访问器体 set set访问器体 public string thisint index get return arrStrindex; set arrStrindex = value; 语法语法 C#语言支持一种名为索引器的特殊“属 性”,它能够通过引用数组元
43、素的方式来引用 对象。 4 异常处理异常处理 异常处理类 语法语法 System.E xception 异常处理语句 语法语法 trycatchfinally语句 try 被监控的代码 catch(异常类名 异常变量名) 异常处理 finally 程序代码 throw语句 throw ExObject 5 委托和匿名方法委托和匿名方法 委托 语法语法 C#中的委托(Delegate)是一种引用类型,该引用类型与其它引用类型有 所不同,在委托对象的引用中存放的不是对数据的引用,而是存放对方法的引 用,即在委托的内部包含一个指向某个方法的指针。通过使用委托把方法的引 用封装在委托对象中,然后将委托
44、对象传递给调用引用方法的代码。 【修饰符】 delegate 【返回类型】 【委托名称】 (【参数列表】)语法语法 匿名方法 匿名方法允许一个与委托关联的代码被内联地写入使用委托的位置,这 使得代码对于委托的实例很直接。除了这种便利之外,匿名方法还共享了对本 地语句包含的函数成员的访问。 delegate(【参数列表】) 【代码块】 语法语法 6 事件事件 主要内容 委托的发布和订阅委托的发布和订阅 事件的发布和订阅事件的发布和订阅 EventHandlerEventHandler类类 WindowsWindows事件概述事件概述 01 02 03 04 委托的发布和订阅 语法语法 通过委托实
45、现事件处理的过程,通常需要以下4个步骤: (1)定义委托类型,并在发布者类中定义一个该类型的公有成员。 (2)在订阅者类中定义委托处理方法。 (3)订阅者对象将其事件处理方法链接到发布者对象的委托成员(一个委托 类型的引用)上。 (4)发布者对象在特定的情况下“激发”委托操作,从而自动调用订阅者对 象的委托处理方法。 事件的发布和订阅 语法语法 C#提供了专门的事件处理机制,以保证事件订阅的可靠性,其做法是在 发布委托的定义中加上event关键字,其它代码不变。 public event RingEvent OnBellSound; EventHandler类 在事件发布和订阅的过程中,定义事
46、件的类型(即委托类型)是一件重复 性的工作,为此,.NET类库中定义了一个EventHandler委托类型,并建议尽量 使用该类型作为事件的委托类型。 public delegate void EventHandler(object sender,EventArgs e); Windows事件概述 事件在Windows这样的图形界面程序中有着极其广泛的应用,事件响应是 程序与用户交互的基础。用户的绝大多数操作,如移动鼠标、单击鼠标、改变 光标位置、选择菜单命令等,都可以触发相关的控件事件。 public Form1() InitializeComponent(); button1.Click+
47、= new EventHandler(button1_Click); private void button1_Click(object sender,EventArgs e) this.Close(); 7 预处理指令预处理指令 主要内容 #region#region和和# #endregionendregion #defined#defined和和# #undefundef #if#if、# #elifelif、#else#else和和# #endifendif #warning#warning和和#error#error 01 02 03 04 #line#line 05 在使用在使用V
48、isualStudio代码编辑器的大纲显示功能时,指定可展开代码编辑器的大纲显示功能时,指定可展开 或折叠的代码块或折叠的代码块 #region#region和和# #endregionendregion #define#define和和# #undefundef 定义和取消符号,通常用于为定义和取消符号,通常用于为#if指令传递条件表达式,指令传递条件表达式,#define 的结果为的结果为true,#undef的结果为的结果为false #define DEBUG #undef DEBUG 语法语法 使用使用# #definedefine和和# #undefundef定义定义和取消和取消符
49、号符号时,只能在代码文件的顶部时,只能在代码文件的顶部 (所有引用命名空间的代码之前)定义,如果在其他区域定义,(所有引用命名空间的代码之前)定义,如果在其他区域定义, 会出现如会出现如图所图所示的错误提示。示的错误提示。 #if#if、# #elifelif、#else#else和和# #endifendif 主要用来判断符号是否已经定义主要用来判断符号是否已经定义。结合使用结合使用#if、#else、#elif、#endif指令,可以根指令,可以根 据一个或多个符号是否存在来包含或排除代码,这在编译调试版本的代码或针对据一个或多个符号是否存在来包含或排除代码,这在编译调试版本的代码或针对
50、特定配置进行代码编译时,非常有用。特定配置进行代码编译时,非常有用。 #if#if块块不能不能与与# #regionregion块块重叠,但是,可以将重叠,但是,可以将#region#region块嵌套块嵌套 在在#if#if块内,或将块内,或将#if#if块嵌套在块嵌套在#region#region块内。块内。 #if指令 #elif指令 #else指令 #endif指令 if语句 else if语句 else语句 if语句的结尾 #warning生成警告信息生成警告信息 #warning和#error #error生成错误信息生成错误信息 #line 提示提示 更改后的行号,与代码中并不匹
51、配 8 泛型泛型 主要内容 类型参数类型参数T T 泛型接口泛型接口 泛型方法泛型方法 01 02 03 类型参数T 泛型的类型参数T可以看作是一个占位符,它不是一种类型,它仅代表了某种 可能的类型。在定义泛型时,T出现的位置可以在使用时用任何类型来代替。类型 参数T的命名准则如下: 使用描述性名称命名泛型类型参数,除非单个字母名称完全可以让人了解它表示的含义,而 描述性名称不会有更多的意义。例如,使用代表一定意义的单词作为类型参数T的名称,代码 如下: public interface IStudent public delegate void ShowInfo 将T作为描述性类型参数名的前
52、缀。例如,使用T作为类型参数名的前缀,代码如下: public interface IStudent T Sex get; 泛型接口 声明泛型接口时,与声明一般接口的唯一区别是增加了一个。一般来 说,声明泛型接口与声明非泛型接口遵循相同的规则。泛型类型声明所实现的 接口必须对所有可能的构造类型都保持唯一,否则就无法确定该为某些构造类 型调用哪个方法。 interface 【接口名】 【接口体】 语法语法 泛型方法 泛型方法是在声明中包括了类型参数T的方法。泛型方法可以在类、结构 或接口声明中声明,这些类、结构或接口本身可以是泛型或非泛型。如果在泛 型类型声明中声明泛型方法,则方法体可以同时引用
53、该方法的类型参数T和包 含该方法的声明的类型参数T。 【修饰符】 void 【方法名】 【方法体】 语法语法 小结小结 本章本章对面向对象编程的高级知识进行了详细讲解,学习本章内容,对面向对象编程的高级知识进行了详细讲解,学习本章内容, 重点需要掌握的是类的继承与多态、接口的使用、集合以及泛型的使用重点需要掌握的是类的继承与多态、接口的使用、集合以及泛型的使用 ,难点是委托和事件的应用,另外,对结构、索引器、异常处理和预处,难点是委托和事件的应用,另外,对结构、索引器、异常处理和预处 理指令等知识点,熟悉它们的使用方法即可。理指令等知识点,熟悉它们的使用方法即可。 上机指导上机指导 模拟实现输
54、出进销存管理系统中的每月销售明细,运行程序,输入要查询的月份,如果输入的月份正 确,则显示本月商品销售明细;如果输入的月份不存在,则提示“该月没有销售数据或者输入的月份有 误!”信息;如果输入的月份不是数字,则显示异常信息。 第第5章章 Windows应用程序开发应用程序开发 01 开发应用程序的步骤开发应用程序的步骤02 Windows窗体介绍窗体介绍 03 Windows控件的使控件的使 用用 04 菜单、工具栏与状态栏菜单、工具栏与状态栏 05 对话框对话框 06 多文档界面(多文档界面(MDI) 07 打印与打印预览打印与打印预览 1 开发应用程序的步骤开发应用程序的步骤 开发应用程序
55、的步骤 使用C#开发应用程序时,一般包括创 建项目、界面设计、设置属性、编写程序 代码、保存项目、程序运行等6个步骤。 2 Windows窗体介绍窗体介绍 主要内容 添加窗体添加窗体 设置启动窗体设置启动窗体 设置窗体属性设置窗体属性 窗体常用方法窗体常用方法 01 02 03 04 窗体常用事件窗体常用事件 05 如果要向项目中添加一个新窗体,可以在项目名称上单击鼠标右键,在 弹出的快捷菜单中选择“添加”/“Windows窗体”或者“添加”/“新建项” 菜单,打开“添加新项”对话框,选择“Windows窗体”选项,输入窗体 名称后,单击“添加”按钮,即可向项目中添加一个新的窗体。 添加窗体
56、public static void Run (Form mainForm) 设置启动窗体 语法语法 向项目中添加了多个窗体以后,如果要调试程序,必须要设置首先运 行的窗体,这时就需要设置项目的启动窗体。项目的启动窗体是在 Program.cs文件中设置的,在Program.cs文件中改变Run方法的参数,即可实 现设置启动窗体。 Run方法用于在当前线程上开始运行标准应用程序,并 使指定窗体可见。 设置窗体属性 更换窗体的图标Icon属性 隐藏窗体的标题栏FormBorderStyle属性 控制窗体的显示位置StartPosition属性 修改窗体的大小Size属性 设置窗体背景图片Back
57、groundImage属性 控制窗体总在最前TopMost属性 窗体常用方法 Show方法显示窗体 public void Show() public void Show(IWin32Window owner) Hide方法隐藏窗体 public void Hide() Close方法关闭窗体 public void Close() 窗体常用事件 Load事件窗体加载 private void Form1_Load(object sender, EventArgs e) FormClosing事件窗体关闭时触发 private void Form1_FormClosing(object sen
58、der, FormClosingEventArgs e) 3 Windows控件的使用控件的使用 主要内容 ControlControl基类基类 LabelLabel ButtonButton TextBoxTextBox 010203 04 CheckBoxCheckBox 05 RadioButtonRadioButton 06 RichTextBoxRichTextBox 07 ComboBoxComboBox 08 ListBoxListBox 09 GroupBoxGroupBox 10 ListViewListView 11 TreeViewTreeView 12 ImageLis
59、tImageList 13 TimerTimer 14 Control基类 语法语法 Control类是定义控件的基类,控件是带有可视化表示形式的组件。Control 类实现向用户显示信息的类所需的最基本功能,它处理用户通过键盘和指针设 备所进行的输入,另外,它还处理消息路由和安全。 ControlControl类的成员可以通过类的成员可以通过Visual StudioVisual Studio帮助查看帮助查看。 Label控件 语法语法 Label控件,又称为标签控件,它主要用于显示用户不能编辑的文本,标识 窗体上的对象(例如,给文本框、列表框添加描述信息等),另外,也可以通 过编写代码来设
60、置要显示的文本信息。 1设置标签设置标签文本文本 label1.Text = 用户名:; 2显示显示/隐藏控件隐藏控件 label1.Visible = true; Button控件 Button控件,又称为按钮控件,它表允许用户通过单击来执行操作。 Button控件既可以显示文本,也可以显示图像,当该控件被单击时,它看 起来像是被按下,然后被释放。Button控件最常用的是Text属性,其中, Text属性用来设置Button控件显示的文本,Click事件用来指定单击Button控 件时执行的操作。 TextBox控件 TextBox控件,又称为文本框控件,它主要用于获取用户输入的数据或 者
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024专用产品销售协议样本版B版
- 2024年企业间保密合作合同标准文本版B版
- 2024年商业培训空间租赁协议样本版B版
- 2024办公楼专业管理与服务承包协议范本版B版
- 江南大学《材料力学》2021-2022学年第一学期期末试卷
- 2024个人间借款设备抵押协议标准格式版B版
- 佳木斯大学《动物环境卫生学》2021-2022学年第一学期期末试卷
- 2024年全面物流挂靠运营合作合同
- 暨南大学《概率论与数理统计》2021-2022学年第一学期期末试卷
- 济宁学院《金融学》2021-2022学年第一学期期末试卷
- 2024深圳市房地产买卖合同范本
- “电解池”教学设计第1课时
- 博物馆建设项目可行性研究报告
- 实习生肾病内科出科考试试题
- 2024-2030年中国废旧纺织品行业市场深度调研及竞争格局与投资前景研究报告
- 人教新目标版英语八上Unit 4《Whats the best movie theater》(Period 1)说课稿
- 三年级语文上册 第三单元 10 在牛肚子里旅行说课稿 新人教版
- DLT 722-2014 变压器油中溶解气体分析和判断导则
- 2024-2030年中国井口装置行业发展态势分析及需求规模调研研究报告
- DL-T 297-2023 汽轮发电机合金轴瓦超声检测
- 冶金矿山采矿设计规范
评论
0/150
提交评论