C#编程和.NET框架 教学课件 ppt 作者 崔建江 第5章 第五章

上传人:E**** 文档编号:89188404 上传时间:2019-05-21 格式:PPT 页数:139 大小:2.85MB
返回 下载 相关 举报
C#编程和.NET框架 教学课件 ppt 作者 崔建江 第5章 第五章_第1页
第1页 / 共139页
C#编程和.NET框架 教学课件 ppt 作者 崔建江 第5章 第五章_第2页
第2页 / 共139页
C#编程和.NET框架 教学课件 ppt 作者 崔建江 第5章 第五章_第3页
第3页 / 共139页
C#编程和.NET框架 教学课件 ppt 作者 崔建江 第5章 第五章_第4页
第4页 / 共139页
C#编程和.NET框架 教学课件 ppt 作者 崔建江 第5章 第五章_第5页
第5页 / 共139页
点击查看更多>>
资源描述

《C#编程和.NET框架 教学课件 ppt 作者 崔建江 第5章 第五章》由会员分享,可在线阅读,更多相关《C#编程和.NET框架 教学课件 ppt 作者 崔建江 第5章 第五章(139页珍藏版)》请在金锄头文库上搜索。

1、C#编程和.NET框架 (第二版) 主讲人:崔建江 东北大学信息科学与工程学院,C#编程与.NET框架,第3章 C#语言基础,第5章:C#进阶,3,概要内容,本章内容在学习完C#的基本语法和面向对象编程的规则后,继续讨论C#进阶内容,主要包括命名字空间 、不安 全代代、异常处理 、编译预处理 、线程、文本处理、代理等内容。这些知识是进行灵活高效编程所必须的。,第5章:C#进阶,4,5.1 命名空间 5.2 不安全代码 5.3 异常处理 5.4 编译预处理 5.5 线程 5.6 文本处理 5.7 代理,第5章 C#进阶,第5章:C#进阶,5,5.1名字空间,组织形式和作用 嵌套 using关键字

2、 别名,第5章:C#进阶,6,5.1.1名字空间,名字空间提供了一种组织类和其它类型的方式,与文件和组件不同,名字空间是一种逻辑组合而不是物理组合,namespace Language class English ,e.cs,namespace Language class Chinese ,c.cs,namespace Language class English class Chinese ,第5章:C#进阶,7,5.1.1名字空间的作用,用一种逻辑划分来避免类名称的冲突,namespace Supermarket class Customer ,namespace Restaurant

3、class Customer ,SM.dll,RT.dll,Class Visit Supermarket.Customer sct; Restaurant.Customer rct; ,Visit.exe,第5章:C#进阶,8,5.1.2名字空间的嵌套,namespace Liaoning namespace Shenyang class Neu /Code ,namespace Liaoning.Shenyang class neu /Code ,等价,通过名字空间的嵌套,可以最大限度的减少来自不同文件中类名称的冲突,小提示:微软建议在大多数情况下至少提供两个嵌套的名称空间,第一个为公司名

4、称或组织名称,第二个为技术名称或软件包的名称,而类是其中的成员,第5章:C#进阶,9,5.1.3 using关键字,/File 1 /Without using,the full namespace must be invoked System.Int32 a,b; System.Console.WriteLine(“a”);,/File 2 /With using,the relative namespace may be used using System Int32 a,b; Console.WriteLine(“a”);,使用using关键字后,引用名字空间 中的类时不必带上名字空间前

5、缀 using,include ,等价,第5章:C#进阶,10,5.1.4别名(1/2),using neu=Liaoning.Shenyang.Neu class Person namespace Liaoning.Shenyang.Neu class Student /code ,neu.Student s1=new neu.Student (),名字空间别名用来简化操作,用更短更有意义的名称来代替冗长的名字空间名称,第5章:C#进阶,11,5.1.4别名(2/2),using neu=Liaoning.Shenyang.Neu class Person namespace Liaonin

6、g.Shenyang.Neu class Student /code ,Liaoning.Shenyang.Neu.Student s1=new Liaoning.Shenyang.Neu.Student (),别名用来简化操作,用更短更有意义的名称来代替冗长的名字空间名称,第5章:C#进阶,12,5.1.4别名(2/2),using neu=Liaoning.Shenyang.Neu class Person namespace Liaoning.Shenyang.Neu class Student /code ,Liaoning.Shenyang.Neu.Student s1=n Liao

7、ning.Shenyang.Neu.Student (),别名用来简化操作,用更短更有意义的名称来代替冗长的名字空间名称,从结构化编程的角度名字空间有什么好处?其与C+中的名字空间有什么异同?,+有方法,第5章:C#进阶,13,思考题,1.大家知道,java语言的类一般都对应一个同名的java文件,但在C#中类名可以和文件名不同,他们的名字空间又有什么区别呢?试编译下面两段程序,体会区别,Test.java: package com.mytest; public class Test public static void main() System.out.println(“This is m

8、y test !“); ,第5章:C#进阶,14,思考题,Test.cs namespace com.mytest using System; public class MyTest public static void Main() Console.WriteLine(“This is my test !“); ,第5章:C#进阶,15,2.在下面名字空间中定义的类的完整名字是什么? namespace BliposSoft namespace RocketSimulation class Rocket 3.假设你在为一家软件公司BikeTeck工作,此公式正计划开发一个类库,所包含的类主要

9、针对公司的三个对象:自行车设计、健康和适应性以及计算机地图绘制。使用C#代码来说明你将采用的整个名字空间结构。,第5章:C#进阶,16,参考文献,1Klaus Michelsen,C# Primer Plus中文版,北京:人民邮电出版社,2003年:448454,第5章:C#进阶,17,5.2不安全代码,C#中的指针 C#中不安全代码的实现,第5章:C#进阶,18,5.2.1指针存在的原因,高效的访问或处理数据 使用内存地址,高风险,高性能,折衷,不安全代码 (unsafe),第5章:C#进阶,19,示 例,class Demo static unsafe void Main() int *P

10、Array=stackalloc int10; for(int i=0;i+;i10) PArrayi=i*i; for(int j=0;j+;j10) Console.WriteLine(“Element 0=1” ,i,*(PArray+i); ,数据存取,数据存取,使用不安全代码,第5章:C#进阶,20,5.3 异常处理,问题导入 基本格式 异常的嵌套 Exception对象 自定义异常类,第5章:C#进阶,21,5.3.1导入(1/8),异常:在程序运行阶段中出现的问题。 是未被捕获的编程错误,不包括逻辑错误(结果不正确); 不希望用户看到相关信息,以友好的方式来处理这种异常错误。 在

11、程序中加代码,提供更为明确的结果,第5章:C#进阶,22,/ A program that throws an exception using System; class MyError public static void Main() int myArray = new int5; for ( int ctr = 0; ctr 10; ctr+ ) myArrayctr = ctr; ,未处理的“System.IndexOutOfRangeException”类型的异常出现在 ConsoleApplication1.exe 中 其他信息: 索引超出了数组界限.,第5章:C#进阶,23,5.

12、3.1导入(1/8),Open “testfile.txt” For Output As #1 打开输出文件。 Print #1, “This is a test” 将文本数据写入文件。 Close #1 关闭文件,这里假设忘记写此语句 Kill “testfile.txt“ 删除文件,VB程序段,解决方法: VB:On Error GoTo flag flag: C+:try catch,第5章:C#进阶,24,导入(2/8),1.在C+中可以抛出任何异常,throw的对象可以是任何对象,包括int、char*等。C+标准库中抛出的所有异常,都是派生自std:exception类 2.标准C

13、+中,是没有finally子句,C+中的异常,第5章:C#进阶,25,导入(3/8),C+中,函数的声明,缺省时可以抛出任何异常,也可以使用异常规范来约束函数抛出的异常 但是,C+中的异常规范不是很可靠,C+中的异常,第5章:C#进阶,26,导入(4/8),C+的异常可以派生自多个异常基类。这一个特性使得难以区分某些类的异常,例如网络文件的异常 捕捉所有异常的语法。C+中,不是单继承的,所以不能如同Java或者C#那样,通过捕捉某个基类来捕捉所有的异常,C+中的异常,第5章:C#进阶,27,导入(5/8),C+中的异常,总之,C+中,命名空间和异常规范是作为针对大规模程序设计而引入的。由于C+

14、中没有垃圾收集机制,异常造成了资源管理的复杂。因此,在C+中写异常安全的代码,是十分困难的。,第5章:C#进阶,28,导入(6/8),Java中的异常,可以抛出任何派生自了Throwable的类。Throwable类下分 Exception和Error 。而Exception中,有一个特别的派生类, RuntimeException。,Throwable,Exception,Error,RuntimeException,第5章:C#进阶,29,导入(7/8),Java中的异常,Java中,也使用异常规范,并且在整个基础类库中都使用。Java是基于JVM运行,但是JVM本身就抛出异常,也就是,所

15、有的方法都可能抛出异常。因此,Java编译器编译不检查Error和RuntimeException。与C+不同,缺省下不允许抛出任何非RuntimeException和Error的异常,第5章:C#进阶,30,导入(8/8),Java中的异常,3.Throwable、Exception、RuntimeException中部分成员,是在不同的JDK版本中添加的,编写代码的时候需要注意。 4. Java中的try语法,包括finally子句,第5章:C#进阶,31,导入(8/8),Java中的异常,3.Throwable、Exception、RuntimeException中部分成员,是在不同的JDK版本中添加的,编写代码的时候需要注意。 4.Java中的try语法,包括finally子句,.NET实现了多语言的集成,这会对异常处理产生什么影响?,第5章:C#进阶,32,databases connection,5.3.2 C#异常处理 基本格式(1/2),try throw a exception catc

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号