C#图解教程笔记20170717

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、和所有变量一样,字段用来保存数据,并具有如下特征:

  它们可以被写入;

  它们可以被读取;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,389评论 25 707
  • 《深入理解Java虚拟机》笔记_第一遍 先取看完这本书(JVM)后必须掌握的部分。 第一部分 走近 Java 从传...
    xiaogmail阅读 5,056评论 1 34
  • 基础 .NET概述 参考:http://www.cnblogs.com/yplong/p/3279934.html...
    donite阅读 1,608评论 0 8
  • 最近一直在思考,到底什么才是我的职场资本?我引以为傲的究竟是什么? 01 成长突破是职场人不断的自我要求。增值自己...
    Penn先生阅读 687评论 0 0
  • 是,一段时间丧一次。我习惯了,其实还蛮想哭的,我也不知道,有些煎熬,甚至可以爱上女人,爱上自己的朋友,我已经分不清...
    akimbo阅读 173评论 0 0