C#图解教程笔记20170717

2017-07-17  本文已影响108人  李大_C

2017/7/17

C#和.NET框架

.NET框架,CLR的C#语言

.net框架是一个独立发布的软件包,包括了CLR,类库以及相关的语言编译器等工具。C#代码经过编译之后再CLR环境中运行。

.NET框架是一种比MFC或COM变成技术更一致并面向面对对象的环境,它的特点包裹一下几点。

1.多平台:该系统可以在广发的计算机上运行,包括服务器,桌面机到PDA和移动电话。

2.行业标准:该系统使用行业标准的通信协议,比如XML,HTTP,SOAP和WSDL。

3.安全性:该系统能提供更加安全的执行环境,及时有来源可疑的代码存在。

.NET框架由三部分组成

执行环境称为CLR(Common Language Runtime,公共语言运行库)。CLR在运行期管理程序的执行。

BCL  基类库

大大改进的编程环境

1.面向对象的编程环境

CLR,BCL和C#被设计的完全面对对象,并形成良好的集成环境

2.自动垃圾回收

CLR有一项服务称为GC(垃圾收集),它能为你自动管理内存

3.互操作性

.NET框架的设计专门考虑了不同的.NET语言,操作系统或Win32 DLL和COM之间的互操作性 

(1).NET语言的互操作性允许不同的.NET语言编写的类,只需要遵循一定的规则即可。

(2).NET提供一种称为平台调用的特性,允许.NET的代码调用并使用非.NET的,但通过标准Win32 DLL 到处的纯C函数的代码,比如Windows API.

(3).NET框架还允许与COM的互操作。.NET软件组件能调用COM组件,而且COM也能调用.NET组件,就像它们是COM组件一样。

4.不需要COM

5.简化的部署

6.类型安全性

7.基类库

包含以下一些类

通用基础类:这些类提供了一组极为强大的工具,可以应用到广发的编程任务中,比如字符串操作,安全和加密。

集合类:这些类实现了列表,字典,散列表以及位数组

线程和同步类:这些类用于创建多线程程序

XML类:这些用于创建读取以及操作XML文档

编译成CIL

.NET语言的编译器接受源代码文件,并生成名为程序集的输出文件。程序集可以使可执行的文件或DLL

1 程序集里的代码并不是本机代码,而是一种名称为CIL(Common Intermediate Language,公共中间语言)的中间语言

2 程序集包含 的信息中包含下列项目

程序的CIL;

程序中使用的类型的元数据;

对其他程序集引用的元数据。

编译成本机代码并执行

程序的CIL直到他被调用运行时才会被编译成本机代码,在运行时,CLR执行下面的步骤(如图):

1、检查程序集的安全特性;

2、在内存中分配空间;

3、把程序集中的可执行的代码发送给实时(Just-in-Time,JIT)编译器,把其中的一部分编译成本机代码。

程序集中的可执行的代码在需要的时候由JIT编译器编译,然后他就被缓存已被再后来的程序中执行。使用这个方法以为着不被调用的代码不会被编译成本机代码,而且被调用到的代码纸杯编译一次。

一旦CIL被编译成本机代码,CLR就在他运行时管理它,执行像释放无助内存,检查数组边界,检查参数类型和管理异常之类的任务。

托管代码:为.NET框架编写的代码,需要CLR。

非托管代码:不在CLR控制之下运行的代码,比如Win32 C/C++ DLL。

编译和执行综述

无论原始源文件的语言是什么,都遵循同样的编译和执行过程

CLR

.NET框架的核心组件是CLR,他在操作系统的顶层并管理程序的执行,如图所示。CLR还提供下列服务:

自动垃圾回收;

安全和认证;

通过访问BCL(base class library,基类库)得到广泛的编程功能,包括入院Web服务和数据服务之类的功能。

CLI

CLI(Common Language Infrastructrue,公共语言基础结构),他把所有的.NET框架的组件连接成一个内聚的,一致的系统。他展示了系统的概念和架构,并详细说明了所有软件都必须坚持的规定和约定。CLI是一组阐述了系统的架构,规则和约定的规范。

CLI的重要组成部分

1.公共类型系统

CTS(Common Type System,公共类型系统)定义了那些在托管代码中一定会使用的类型的特征。CTS的一些重要方面如下:

CTS定义了一组丰富的内置类型,以及每种类型确定的、详细的特性;

.NET兼容编程语言提供的类型通常映射到CTS中已定义的内置类型集的某一个特殊子集;

CTS最重要的特征之一是所有类型都集成自公共的基类——object。

2.公共语言贵方

CLS(conmon language specification,公共语言规范)详细的说明了一个.NET兼容编程语言的规则,属性和行为。其主题包裹数据类型和,类结构和参数传递。

缩写回顾



C#编程概述

命名约定

标识符风格

Pascal风格  标识符中每个单词首字母大写   用于类型名和成员名      CarDeck,DealersHand

Canel风格    除第一个单词以外,标识符中所有单词都首字母大写  用于本地变量和方法参数

字段名称以下划线开头:_HighTemp、_LowTemp.

6种可以有用户自己创建的类型:

类类型  class;

结构类型 struct ;

数组类型 array;

美剧类型 enum;

委托类型 delegate;

接口类型 interface;

运行中的程序使用两个内存区域来储存数据:栈和堆。

栈是一个内存数组,是一个LIFO(last-in first-out,后进先出)的数据结构,栈储存几种类型的数据:

某些类型变量的值;

程序当前的执行环境;

传递给方法的参数。

栈的特征

栈有如下几个普遍特征:

数据只能从栈的顶端插入和删除;

把数据放到栈顶 称为入栈;

从栈顶删除数据称为出栈;

堆是一块内存区域,堆里的内存可以任意顺序存入和移除。

程序可以在堆里保存数据,但并不能显示的删除它们。CLR的自动GC在判断出程序的代码将不会在访问某数据项时,会自动清除无主的堆对象。

值类型   只需要一段单独的内存,用于储存实际的数据,位于栈中

引用类型  需要两段内存

第一段储存实际的数据,位于堆中。

第二段是一个引用,指向数据在堆中的存放位置,引用放在栈里

说明:对于引用类型的任何对象,他所有的数据成员都存放在堆里,无论他们是指类型还是引用类型。

变量

变量是一个名称,表示程序执行时储存在内存中的数据


类:基础

类是一个能储存数据并执行代码的数据结构,它包含以下内容:

数据成员,它储存与类的实例相关的数据,数据成员通常模拟该类所表示的显示世界事务的特性

函数成员,它执行代码。函数成员通常模拟类所表示的显示世界事务的功能和操作。

 类是逻辑相关的数据和函数的封装,通常代表真实世界中的或概念上的事务。

运行中的程序是一组相互作用的对象。

字段和方法是最重要的类成员类型,字段是数据成员,方法是函数成员。

字段

字段是隶属于类的变量

1、他可以是任何类型,无论是预定义类型还是用户定义类型

2、和所有变量一样,字段用来保存数据,并具有如下特征:

  它们可以被写入;

  它们可以被读取;

上一篇下一篇

猜你喜欢

热点阅读