




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章C 高级特性 异常 调试 唐大仕dstang2000 本章内容 4 1程序的组织4 2委托与事件4 3操作符重载4 4异常处理4 5Attribute4 6C 语言中的其他成分4 7程序的调试 4 1程序的组织 名字空间程序的逻辑组织嵌套类型类中嵌套类型程序集程序的物理组织 名字空间 1 名字空间的概念逻辑划分 避免名字冲突2 名字空间的声明namespacexxx xxxx 可嵌套3 名字空间的导入usingxxx xxxx 4 使用别名using别名 名字空间或类名 NamespaceUsing cs 嵌套类型 嵌套类型的概念类型中的类型classA publicclassB publicstructC newA B C 嵌套类型的可访问性受各个层次的限制 NestedAccessibility cs 程序集 模块 module 程序集 assembly 在VS NET上引用程序集在项目上点右键 添加引用 csc target mod out Add modAdd cscsc target mod out Multi modMulti csal target library out MyLibrary dllAdd modMulti modcsc target exe out MyClient exe reference MyLibrary dllMyClient cs 4 2委托与事件 大致上 委托 函数指针事件 回调函数 委托 委托的声明publicdelegatedoubleMyDelegate doublex 委托的实例化MyDelegatedd2 newMyDelegate obj myMethod 委托的调用委托变量名 参数列表 d2 8 9 DelegateIntegral cs 委托示例 DelegatePlotFun cs 委托的合并 委托的合并 多播MultiCastDelegate一个委托实例中可以 包含 多个函数调用委托 就是调用其中多个函数多个函数间的先后顺序是没有意义的运算符 动态地增减其中的函数提高了程序的灵活性 DelegateMultiTest cs Delegate温度 cs 委托的转换与相等 委托的转换按声明的名称判断以下两个不能互相转换或加减delegatevoidD inta delegatevoidE inta 委托的相等按内容 即其中 包含的函数 来判断 DelegateEquals cs 事件 事件的声明publicevent委托名事件名 事件的注册与移除事件名 或 在事件所在类的外面 只能用以上两个运算符事件的发生事件名 参数列表 相当于回调所注册的函数 事件与委托的关系 事件有点像委托类型的实例事件一定有相关的委托类型与委托实例一样 事件也 包含 多个函数事件的运算符受更多限制 或 事件比委托实例更复杂 事件存取器修饰符event委托类型名事件名 add e value remove e value EventButtonForm cs 使用事件的例子 网络爬虫程序中通知调用者下载开始 结束及下载进度 EventWhenDownload cs 4 3操作符重载 操作符重载的概念 操作符有时比方法名更直观如两个复数用a b比a Add b 更直观但要慎用操作符重载有一些限制如成对 如类型要求 如有的不能重载更详细的内容 请参见文档 操作符的声明 一元操作符声明的形式如下 publicstatic类型operator一元操作符 类型参数名 二元操作符声明的形式如下 publicstatic类型operator二元操作符 类型参数名 类型参数名 类型转换操作符声明的形式如下 publicstaticimplicitoperator类型 类型参数名 publicstaticexplicitoperator类型 类型参数名 OperatorComplex cs 4 4异常处理 异常处理 异常可以以两种不同的方式引发 throw语句无条件 即时的抛出异常 C 语句和表达式执行过程中激发了某个异常的条件 使得操作无法正常结束 从而引发异常 例如整数除法操作分母为零时将抛出一个异常 首先介绍一下throw语句 throw语句抛出一个异常的语法为 throwexpression带有表达式的throw语句抛出的异常是在计算这个表达式时产生的 异常由try语句来处理的try语句提供了一种机制来捕捉执行过程中发生的异常 以下是它的三种可能的形式 try catchtry finallytry catch finally 异常的概念 C 中的异常处理try catch Exceptione finally System Exception类publicException publicException strings Message属性StackTrace属性 几种常用的异常类 System OutOfMemoryExceptionSystem StackOverflowExceptionSystem NullReferenceExceptionSystem TypeInitializationExceptionSystem InvalidCastExceptionSystem ArrayTypeMismatchExceptionSystem IndexOutOfRangeExceptionSystem MulticastNotSupportedExceptionSystem ArithmeticExceptionSystem DivideByZeroExceptionSystem OverflowException 捕获和处理异常 抛出异常thrownewSomeException 捕获异常try catch AExceptione1 catch BExceptione2 catch 更一般的Exceptione finally 注 catch 表示捕获所有种类的异常 ExceptionIndexOutOf cs ExceptionSimple cs 创建用户自定义异常类 从Exception或ApplicationException继承重抛异常throws 异常链接thrownewExcepiton msg e 这里e称为内部异常InnerException属性使得外部能进一步知道内部的异常原因 ExceptionInner cs 算术溢出与checked 对溢出进行检查对整个程序csc checkedXXXX cs对部分程序针对表达式 checked 表达式 及uncheckd 表达式 针对块语句 checked 及uncheckd 对溢出异常进行捕获try catch OverflowExceptione CheckedTest cs 4 5Attribute Attribute HelpUrl http SomeUrl APIDocs SomeClass classSomeClass WebMethod voidGetCustomers stringTest SomeAttr stringparam1 Attribute是与类 结构 方法等元素相关的额外信息 是对元信息的扩展 通过Attribute可以使程序 甚至语言本身的功能得到增强 使用系统定义的Attribute 使用Attribute的一般方式在程序集 类 域 方法等前面用 表示可以省略 Attribute 几个字母 只写xxxxx可以带参数位置参数 相当于构造方法带的参数 命名参数 域名或属性名 值 示例在Main 方法使用 STAThread 使用 过时 AttributeObsolete cs使用 条件 AttributeConditional cs在结构上 枚举上使用 StructLayout Flag在程序集级别应用Attribute assembly AssemblyCompany 自定义Attribute 1 声明Attribute类2 使用Attribute类3 通过反射访问属性 AttributeHelp cs AttributesareclassesAttachedtotypesandmembersAttributescanbequeriedatruntime classHelpUrlAttribute System Attribute publicHelpUrlAttribute stringurl HelpUrl http SomeUrl APIDocs SomeClass classSomeClass Typetype Type GetType SomeClass object attributes type GetCustomAttributes 4 6C 语言中的其他成分 编译预处理 1 标识符声明 define定义一个标识符 undef 取消定义 一个标识符 2 条件处理 if elif else endif3 信息报告 error和 warning4 行号标记 line行号 文件名 unsafe及指针 1 unsafe用于修饰类 方法等2 fixed及指针fixed 类型 指针名 表达式 语句3 sizeof运算符sizeof 简单或结构类型名 4 stackalloc在栈上分配的内存 而不是在堆上 因此不会担心内存被垃圾回收器自动回收 UnsafeCopy cs C AndPointers DeveloperssometimeneedtotalcontrolPerformanceextremesDealingwithexistingbinarystructuresAdvancedCOMSupport DLLImportC unsafe alimited inlineC Pointertypes pointerarithmeticUnsafecastsDeclarativepinning fixedstatement C developershaveheadroom UnsafeExample classFileStream Stream inthandle dllimport kernel32 SetLastError true staticexternunsafeboolReadFile inthFile void lpBuffer intnBytesToRead int nBytesRead Overlapped lpOverlapped publicunsafeintRead byte buffer intindex intcount intn 0 fixed byte p buffer ReadFile handle p index count 其他关键字 1 lock多线程程序中 lock可以将某个对象加锁2 volatile随时可能被程序以外的其他因素所修改 域被volatile修饰时 会阻止编译器对它的优化 C 几个语法的小结 类型声明类的成员 类型声明 类型声明是C 程序的主体 它可以位于名字空间中 也可以是嵌套的类型 类型声明包括以下几种 1 类class2 结构struct3 接口interface4 枚举enum5 委托delegate 类的成员 1 常数 const 它代表了与类相关的常数数据 2 域 field 它是类中的变量 3 方法 method 它实现了可以被类实现的计算和行为 4 属性 property 它定义了命名的属性和与对这个属性进行读写的相关行为 5 事件 event 它定义了由类产生的通知6 索引 indexer 它允许类的实例通过与数组相同的方法来索引 类的成员 续 7 操作符 operator 它定义了可以被应用于类的实例上的表达式操作符 8 实例构造函数 instanceconstructor 它执行需要对类的实例进行初始化的动作 9 析构函数 destructor 类的实例被清除时实现的动作 结构不能有析构函数 10 静态构造函数 staticconstructor 它执行对类本身进行初始化的动作 11 类型 type 它代表位于类中的类型 4 7程序的调试 错误的种类 代码的错误通常可以分成三大类语法错误运行错误逻辑错误其中语法错误比较容易排除 也是一种低级的错误 运行错误和逻辑错误需要靠经验 调试工具以及不断的深入代码来排除 语法错误 此类型的错误通常发生在程序员对语言本身的熟悉度不足如if之后忘了加上大括号 For语句少了分号 还有比如定义一个变量是Student 但是在引用的时候不小心就变成studnet了 还有一种情况是调用函数错误的语法 例如调用SubString函数少传了一个参数 使用VisualStudio NET开发工具 多数的错误会在编辑程序的时候发现 逻辑错误 逻辑错误 LogicError 是指程序算法的错误 这种错误程序不会发生任何程序中断或跳出程序 而是一直执行到最后 可能有结果 但是执行结果是不对的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华三考试题库及答案
- 森林火警法律知识培训课件
- 桩基全护筒跟进施工课件
- 桥脑病变MRI课件
- 桥梁隧道冲刺课件
- 2025年技能提升跨行业通-用招聘笔试模拟题及答案
- 2025年陪诊师考试知识点探讨与试题及答案
- 2025年验船师考试(C级船舶检验专业实务)复习题及答案二
- 2025年航空公司面试空中乘务员能力预测试题集
- 2025年物流经理专业面试题解答技巧
- 临水作业安全培训
- 数控机床故障诊断与维修(第4版)(微课版)课件 绪论、1 数控机床常用电气元件、2.1 数控系统及故障排除方法
- 清洁与消毒培训
- 原创简约企业职场新入职员工心态培训
- DB11∕T 637-2024 房屋结构综合安全性鉴定标准
- 2024年10月中级注册安全工程师《金属冶炼安全》真题及答案
- 《高值医用耗材临床应用点评制度》
- 图书分类与管理制度
- 探索数字化技术在博物馆藏品保护与展示中的创新应用
- 康复治疗过程中突发事件的应急预案和处理流程
- 应急调度员电话压力疏导
评论
0/150
提交评论