博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

第1章  .NET面向对象编程基础 

【简述】:主要介绍.NET程序运行原理、编程语言的发展趋势等,尤其是语言的发展趋势的讲解,相信对大家编程会有一点启发。

 第一节   .NET概述

1、.NET概念
   A、.NET Framework 。它是.NET技术的载体。

   B、一组根据.NET Framework特性改造过的编程语言和开发工具。

   C、与.NET Framework相关、基于.NET Framework或包容.NET技术的多种软件产品。

2、学好.NET技术的关键:学习和掌握面向对象理论和基础技术。

3、.NET的发展历程:

   A、2002年,发布.NET Framework 1.0。

   B、2005年,发布.NET Framework 2.0,最大的亮点是泛型特性。

   C、2006年,发布.NET Framework 3.0。

   D、2007年,发布.NET Framework 3.5。最大的亮点是LINQ。

   E、2010年,发布.NET Framework 4.0。最大的亮点是Dynamic(动态性)、并行性

4、 .NET Framework 的地位:

 
 
 

5、CLR的简述:

   A、CLR全称公共语言运行时(Common Language Runtime),它是.NET Framework的核心与基石,所有在.NET平台上运行的程序都处于CLR的管理之下。

   B、从开发.NET应用程序角度,可以将CLR看成一台专用运行.NET应用程序的“虚拟计算机”。

   C、CLR的体系结构简单,除了“CPU”之外,只有一个“计算堆栈”和相应的“内存”,为所有.NET应用程序提供运行环境。

   D、CLR提供了即时编译、垃圾收集、类型管理、异常捕获等功能。

-  E、.NET4.0提供In-Process Side-by-Side Execution(进程内的肩并肩执行)的特性,允许在一个进程内同时启动不同版本的CLR。

第二节 初探.NET程序运行原理

 1、介绍.NET几个常用工具。

   A、csc.exe 是C#语言编译器,生成独立于特定CPU的IL指令。

   B、ildasm.exe 反汇编工具,用于查看IL指令代码,它是深入了解.NET框架的得力工具。

   C、Reflector软件,将IL指令反汇编为多种语言形式,如C#。它对于深入把握特定技术领域很有帮助。

   D、Dotfuscator Software Services工具,加密程序集,保护作者的知识产权。

2、托管代码:运行于虚拟机之上的代码,它也可调用非托管代码。其原理见图:

 
 

3、托管代码的执行过程:

   A、当运行时,CLR的“类装载器”从外部存储器中将IL指令读入内存。

   B、JIT编译器进行安全检查,动态地编译为本地CPU指令代码。此过程仅在第一次调用某个方法时发生。

   C、CLR将编译好的代码本地代码缓存起来,第二次调用时直接调用缓存中的本地代码。

第三节 类和对象

1、对象是以类为模板而创建出来的实例。对象与类的实例是是等同的。

2、面向对象的程序在运行时,会创建多个对象,这些对象之间可能有着复杂的关联,它们相互协作,共同完成应用程序所提供的各项功能。

正在运行的面向对象的程序 = 对象 + 对象之间的相互协作关系

3、类是面向对象程序中最基本的复用软件单元,类中可包含多个方法。

4、外界通过对象变量来调用类中的实例方法。

5、创建完类的对象并斌值给相同的类型的变量之后,可以通过此变量调用对象的实例方法,存取对象的字段(或属性)。

6、声明为public 的方法可以被外界调用。

第四节 了解编程的发展趋势

1、现代编程的三大特性:声明性、动态性、并发性。

2、声明式编程风格:告诉计算机“要干什么”,而非怎么干?LINQ就是典型实例。

   Static void GroupStudentByCityUseLINQ()

{

         Var  results = from student in GetStudents()   //指定要处理的数据

          Group student by student.City into grp   //这些数据需要分组

          Select ProcessGroup(grp)             //对于每个分组进行进行一些加工

         PrintResult(results);                      //输出结果

}

  【感想】:我以往的编程方法为面向过程的,编写的程序大多较长,这里介绍的声明式的编程风格对我触动很大,相信在我的程序中一定会向这方面发展,比如大量使用LINQ等。

3、动态性:

A、概念:就是将一些原本在编译时完成的工作(比如进行类型识别、生成方法调用指令等)推迟到程序运行时才进行。

B、NET4.0引入一个动态语言运行时(Dynamic Language Runtime)即DLR,在CLR之上提供一个动态语言的运行环境,从而允许Ruby等动态语言在.NET平台上运行,同时像C#、VB.NET等静态语言有了动态特性。

C、动态编程的优点:灵活,开发效率较高。

D、案例:

    dynamic d = 1;

    dynamic result = d.DoSomething();

    Console.WriteLine(result)

   [解释]:变量d保存的是一个整数,默认情况下不可能有一个DoSomething方法,然而,上述代码却可以顺利通过编译,直到运行是才报告引发了一个RuntimeBinderException异常。

E、应用场景之一:使用dynamic关键字简化与COM组件交互。

4、并行性:.NET4.0引入了并行扩展,为所有.NET语言提供了一个开发并行程序的平台。在编程语言层面,主要体现将LINQ增强为支持并行功能的并行LINQ。

     var results = from student in GetStudents().AsParallel()

         group student by student.City into grp

          select ProcessGroup(grp);

     另外,函数式语言F#,天生就是开发并行程序的。在对海量数据处理领域大有用武之地。

【感想】:并行性的开发,在当今CPU的多核的时代显得十分重要,尤其是运行在服务器端的程序更是如此。在此方面的投入完全是值得的。