C#图解教程第一章 C#和.NET框架

1.1 在.NET之前  C#发音:see shap  1.1.1 20世纪90年代后期的Windows编程   20世纪90年代后期各语言缺点:    1.纯Win32 API不是面向对象的,而且工作量比MFC的更发    2.MC是面向对象的,但是他却不一致,并逐渐变得陈旧    3.COM虽然概念上简单。但实际代码复杂,而且需要更多丑陋的,不雅的底层代码   共同缺点:    主要针对桌面程序而不是Internet的开发 1.2 进入Microsoft.NET  .NET框架是一种比MFC或COM编程技术更一致并面向对象的环境  特点   多平台:可以在广泛的计算机上运行,包括从服务器,桌面机到PDA和移动电话   行业标准:使用行业标准的通信协议,比如XML,HTTP,OAP和WSDL   安全性:提供更加安全的执行环境(即使有来源可疑的代码存在)  1.2.1 .NET框架的组成

   1.编程工具--产生可执行代码(code)-->公共语言运行库(CLR)--使用-->基类库(BCL)    2.编程工具--使用-->基类库(BCL)   CLR(执行环境):    Common Language Runtime,公共语言运行库    在运行期管理程序的执行,包括内容:     内存管理     代码安全验证     代码执行     垃圾收集    编程工具涵盖了编码和调试需要的一起,包括:     Visual Studio集成开发环境     .NET兼容的编译器(例如:C#,VB.JScript和托管的C++)     调速器     服务器端改进,比如ASP.NET   BCL(是.NET框架使用的一个大的类库):    Base Class Library,基类库    可以在程序中使用  1.2.2 大大改进的编程环境   1.面向对象的开发环境    完全面向对象    形成良好的集成环境    为本地程序和分布式系统提供了一致的,面向对象的编程模型    为桌面,移动,Web开发提供了软件开发接口,涉及的对象范围广   2.自动垃圾收集    CLR有一项服务为GC(Garbage Collector,垃圾收集),"自动管理内存"    自动从内存中删除程序不再访问的对象    释放内存和检查内存泄漏   3.互操作性    允许在不同的.NET语言编写的软件模块间无缝地交互     一种.NET写的程序可以使用甚至继承用另外一种.NET语言写的类(只要遵循一定的规则)     很容易地集成不同编程语言生成的模块(有时被称为:"语言无关的")    平台调用(platfrom invake,P/Invoke)     允许调用并使用非.NET的,但通过Win32 DLL导出的纯C函数的代码(比如Windows API)    允许与COM的互操作     互相调用   4.不需要COM    .NET框架摆脱了COM的束缚,不需要使用COM   5.简化的部署    更加容易    不需要使用注册表注册,一个程序只需要被复制到目标机器便可以运行    并行执行     允许一个DLL的不同版本在同一台机器上存在   6.类型的安全性    CLR检查并确保及其他数据对象的类型安全,即使是在不同编程语言编写的组件之间   7.基类库    提供了一个人广泛的基础类库    BCL/FCL     通用基础类:一组极为强大的工具,比如字符串操作,安全和加密     集合类:实现了列表,字典,散列表以及位数组     线程和同步类:用于创建多线程程序     XML类:创建,读取以及操作XML文档  1.3 编译成CIL   程序集代码:非本机代码,,,CIL(Common Intermediate Language,公共中间语言)   程序集包含:    CIL    使用的类型的元数据    对其他程序引用的元数据    CIL术语:     IL/MSIL  1.4 编译成本机代码并执行   程序的CIL调用时才会被编译   CLR执行步骤:    检查程序集的安全特性    在内存中分配空间    可执行代码发送给实时编译器,把其中一部分编译成本机代码   不被调用的代码不会被编译成本机代码,被调用的代码只被编译一次   CIL-->本机代码 CLR在它运行时进行管理(释放无主内存,检查数组边界,检查参数类型和管理异常等)    术语:     托管代码:      为.NET框架编写的代码      需要CLR     非托管代码:      不在CLR控制之下运行的代码,比如:Win32 C/C++ DLL   本机映像生成器或Ngen:    可以把一个程序集转换成当前处理器的本机代码(免除了运行时的JIT编译过程)   编程的执行综述:

1.5 CLR  .NET框架的核心组件,在操作系统的顶层并管理程序的执行

 提供服务:   自动垃圾收集   安全和认证   通过访问BCL得到广泛的编程功能 1.6 CLI  有序和协作:标准  公共语言基础结构  把所以.NET框架的组件连结成一个内聚的,一致的系统  展示了系统的概念和架构  必须坚持的规则和约定   组成:

 开放的国际标准规范  CLI的重要组成部分:   1.公共类型系统(CTS)    定义了那些托管代码中一定会使用的类型的特征:     CTS定义了一组丰富的内置类型,以及每种类型确定的,详细的特性     .NET兼容编程语言提供的类型通常映射到CTS中已定义的内置类型集的某一个特殊子集     *CTS最重要的特征之一是所有类型都继承自公共的基类--object*   2.公共语言规范(CTS)    详细说明了一个.NET兼容编程语言的规范,属性和行为    其主题包括数据类型,类结构和参数传递 1.7 缩写  1.程序集   公共中间语言:    CIL    IL    MSIL  2.公共语言基础结构(CLI)   公共类型系统:    CTS   公共语言规范:    CLS  3.公共语言运行库(CLR)   垃圾收集:    GC   实时编译器:    JIT   基类库:    BCL

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

bigpipe性能优化

本文作者:IMWeb moonye 原文出处:IMWeb社区 未经同意,禁止转载 背景 当前网速越来越快,但是随着网页内容越来越丰富,其实我们打开网页...

22510
来自专栏前端小作坊

GA源代码里的小技巧之Beacon请求

GA监控脚本一般都放在开发者的网页上。域名往往和Google不一样,这样发送请求到Google服务器的时候会涉及到跨域。普通的Ajax请求是做不到的,通常称这种...

731
来自专栏个人随笔

Microsoft Office Access

Microsoft Office Access各版本下载地址:http://www.accessoft.com/download.html 简介access(...

43512
来自专栏NetCore

不错的node.js入门

关于 本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的“高级”JavaScript知识。本书绝不是一本“Hello World”的教程。...

1947
来自专栏codelang

React Native通信原生Android

1333
来自专栏大数据钻研

前端面试那些坑之HTML篇

HTML 1、Doctype作用?标准模式与兼容模式各有什么区别? (1)、<!DOCTYPE>声明位于位于HTML文档中的第一行,处于<html> 标签之前...

3419
来自专栏帘卷西风的专栏

关于lua扩展库lpack的使用指南

lpack的具体用法 1、打包接口pack的使用,全局名字容易混淆lua本身函数unpack,使用string.pack好些,也可以修改源码修改函数名。

633
来自专栏Java帮帮-微信公众号-技术文章全总结

JavaWeb08-XML,tomcat,HTTP轻松入门

XML&tomcat&HTTP 一.XML基础知识 1. xml介绍 XML 指可扩展标记语言(EXtensible Markup Language),也是一种...

3569
来自专栏陈树义

简单笔记

1、类的表面类型和实际类型 实例对象有两个类型:表面类型(Apparent Type)和实际类型(ActualType),表面类型是声明时的类型,实际类型是对象...

2455
来自专栏西枫里博客

Python学习笔记四(条件和循环)

写在开头:今天催更小伙伴们,突然发现自己的python学习笔记竟然一个月没更了,按照每月总更8篇计算,每月应更2篇左右的python学习笔记,也不知是杂文更的太...

471

扫码关注云+社区