.NET平台及C#面向对象编程
第一章 .NET Framerwork 框架介绍
<1>.NET Framerwork 可以实现的目标
(1).提供一个一致的面向对象环境,而无论对象代码是在本地存储执行,还是在Internet分布,或是在远程执行。
(2).提供一个将软件部署和版本控制冲突最小化的代码执行环境。
(3).提供一个可提高代码(包含有未知或不完全授信的第三方创建的代码)执行安全性的执行环境。
(4).提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。
(5).是开发人员的经验在面对类型大不相同的应用程序(如基于Windows 的应用程序和基于Web 的应用程序)时保持一致。
<2>.NET Framerwork 组件
1.NET Framerwork由公共语言运行时(Common Language Runtime 简称CLR)和.NET Framerwork基类库(Framerwork Class Library)这两个主要组件组成。
2.公共语言运行时
(1).公共语言运行时.NET Framerwork的基础,可以将运行时看做一个执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服务,提高了程序的安全性、可靠性以及代码的准确性。
(2).公共语言运行时用于管理内存、线程执行、代码执行、代码安全验证、编译以及其他系统服务。
3.NET Framerwork 类库
(1).NET Framerwork 类库是一个综合性的面向对象的可重用类型集合,可以使用它开发多种应用程序,包括传统的命令行或用户界面(GUR)应用程序,也包括基于ASP.NET所提供的最先应用程序。
(2).NET Framerwork 类库是一个与公共语言运行时紧密集成的可重用的类型集合,该类库是面向对象。
(3)第三方组件可以与.NET Framerwork 中的类库实现无缝集成。
(4)类库还包含支持多种专用开发方案的类型。
<3>.NET 改进的编程环境
(1).面向对象的开发环境,.NET框架为程序员带来了相当大的改进。
(2).面向对象的开发环境
1.系统为本地程序和分布式系统都提供了一致的、面向对象的编程模型。
(3).自动垃圾收集
1.CLR 有一项服务为GC(Garbage Collector),它能为你自动提供管理类存。
2.GC自动从类存中删除程序中不在访问的对象。
3.GC是程序员不在操心以前必须执行的任务,比如释放类存和检查类存泄露。
(4).互操作性
1.NET 框架的设计实现了不同的.NET语言,操作系统平台互相操作。
2.NET 语言的互操作性允许用不同的.NET语言编程编写的软件模块间无缝的交互。
3.NET 提供一种称为平台调用的特性,允许.NET的代码调用并非.NET的、但通过标准 Win32 DDL导出的纯C函数的代码。
(5).简化的部署
一个程序只需要被复制到目标机器上便可以运行了。
(6).类型的安全性
CLR 检查并确保参数及其其他数据对象的类型安全。
(7).框架类库
.NET 框架提供了一个广泛的框架类库FCL(Framerwork Class Library)。
特点:
通用的基础类 :提供极为强大的工具。可以应用到编程任务中。
集合类:这些类实现了列表的、字典、链表以及数据。
线程和同步:这些类用于创建多线程程序。
XML类:用于创建、读取以及操作的XML文档。
<4>.Microsoft中间语言(Microsoft Intermediate Language,MSIL)
(1).公共类型系统(Common Type System)
特点:
1.CTS定义了一组丰富的内置类型,以及每种类型确定、详细的特性。
2.NET 兼容编程语言的类型通常映射到CTS中已定义的内置类型集合的某个特殊子集。
3.CTS最重要的特征呢之一是所有类型都继承至公共的基类--object.
(2).公共语言规范
CLS详细说明了一个.NET兼容编程语言的规则、属性和行为。其主体包括数据类型、类结构和参数传值。
(3).即时编译器
JIT编译器的主要任务是将MSIL代码转换为可由 CUP直接执行的计算机代码。
<5>.C#命名空间
命名空间内的类型称为命名空间的成员
一个原文件可以包含多个命名空间的申明。
引入命名空间的语法:using命名空间的名称
命名空间的要点
(1).命名空间名称可以使任何有效标示符
(2).命名空间可以包含句点符号,用于把命名空间组织成层次。
(3).不要把命名空间命名为类和类型相同的名称。
语法:
namespace 命名空间的名字
{
//定义类
}
<6>.C#的异常处理
程序中的错误
1.语法错误:在编写代码过程中不遵循语言规则。
2.运行时错误:当我们的程序试图执行无法执行的操作时,就会产生运行时的错误。
3.逻辑错误:检查此类错误的最好的方式是使用一些调试工具来测试程序。
<7>C#中的异常(这些异常的类都同在System命名空间内,且都直接或间接派生自System.Eeception类,System.Eeception类是所有异常的父类)
常见的异常类
(1).SystemException 类:该类表示.NET平台引发的异常,被称为系统异常,通常无法修复。
(2).ApplicationException 类:该类表示应用程序发生非致命错误时所引发的异常。
与参数有关的异常类
(1).ArgumentException类:该类用于处理参数无效的异常。
(2).FormatException 类:该类用于处理参数格式错误的异常。
数组有关的异常
(1).IndexOutOfExecption类:该类用于处理下标超出了数组长度所引发的异常。
(2).ArrayTypeMismatchException 类:该用于处理预算数有关的异常。
(3).RankException 类:该类用于处理预算数有关的异常。
<8>.Try和Catch
使用Try和Catch语句块来捕获和处理异常。Try语句块中输出错误的异常,Catch语句块中打印异常信息。
<9>.Finally块的使用
不管代码如何控制,都会执行Finally块中的代码,如果Try中的代码引发异常,则Finally块中的代码将在catch中代码后执行。如果未引发异常,则将直接执行Finally块中的代码。
关于Try...catch....Finally块的使用需要注意一下编码规范:
1.请勿将Try....catch块用于流程控制。
2.不得声明空的catch块。
3.避免在catch中嵌套Try..catch.
<10>.异常处理
C#中除了执行代码时自动引发异常,还可以通过手工编码的方式引发异常。