关闭

C#74课的主要内容

84人阅读 评论(0) 收藏 举报

公共语言运行时(clr)

.net framework提供了一个称为公共语言运行时的环境,它运行代码并提供使开发过程更轻松的服务

公共语言运行时的功能通过编译器和工具公开,可以编写利用此 托管执行环境的代码。使用基于公共语言运行时的语言编译器开发的代码称为托管代码;托管代码具有许多优点:例ian如:跨语言集成,跨语言异常处理,增强的安全性,版本控制和部署支持简化的组件交互模型,调式和分析服务等,有了公共语言运行时,visualbasic Z语言的面向对象的功能比以前多了:运行时提供如下优点:

性能得到了改进

能够轻送使用用其他语言开发得组件

类库提供得可扩展类型

语言功能,如面向对象得编程得继承,接口和重载

允许创建多线程得可缩放应用程序得显式自由线程处理支持

结构化异常处理支持

自定义特性支持

垃圾回收

使用委托取代函数指针,从而增强了类型安全和安全性。

托管执行过程 

执行托管代码得过程包括下列步骤

1选择编译器

2将代码编译为msil 

3将msil编译为本机代码

4运行代码

选择编辑

   为获得公共语言运行时提供的优点,必须使用一个或多个针对运行时的语言编译器,如visual basic,C#,visualC++,F++ 或许多第三方编译器中的一个。

由于运行时是一个多语言执行环境,因此它支持各种数据类型和语言功能,你所用的语言编译器将确定可 用的运行时功能,而你将使用这些功能设计代码,编译器建立代码必须受用的语法,如果你的组件必须完全能夠被用其他被用其它語言編寫。

編移為MSIL

將MSIL編譯為本機代碼

。netframework 提供了兩種方式來執行此類裝換

。netframework實時編譯器

。netframeworkngen.exe

使用jit編譯器進行編譯

使用ngen,exe的安裝時代碼生成

ngen.exe的操作與 jit編議器的操作有三點不同:

它在應用程序運行之前而不是在應用程序運行過程中執行從msil到本機代碼的轉換

它一次編譯一個整個程序集,而不是一次編譯一個方法

它將本機影響緩存中生成的代碼以文件形式持久保存在磁盤上

自動內存管理

自動內存管理是公共語言運行時在托管執行過程中提供的服務之 一。公共語言運行時的垃圾回收器為應用程序管理內存的分配和釋放,對開發人員而言,這就

代碼驗證

在編譯為代碼的過程中,mil代碼必須通過驗證過程,除非管理員已經建立了允許代碼瞧過驗證的安全側絡

運行時是使用下列條件來驗證代碼是否為類型安全

對類型的引用于被引用的類型嚴格兼容

在對象上只調用真確的操作

標示于生成的要求一致

歐諾各驗證過程中檢查msil代碼,嘗試確認該代碼只能通過正確定義的類型訪問內存位置和調用方法。例如,代碼不允許以超出內存范圍的方式來訪問對象。另外驗證過程檢查代碼以確定msil是否以正確生成

自動內存管理

自動內存管理是歐諾個公共語言運行時在托管執行過程中提供的服務之一,公共語言運行時的垃圾回收器為應應用程序管理內存的分配和釋放,對開發人員而言,這就意味這在開發托管應用程序時不必編寫執行內存管理任務的代碼

分配內存

初實化新進程時,運行時會為進程保留一個連續的地址空間區域,這個保留的地址空間被稱為拖管堆,托管堆維護這一個指針,用它指象將在堆中分配的下一個對象的地址

釋放內存

垃圾回收器的優點銀槍根據所執行的分配決定執行回收的最佳時間。垃圾回收器在執 行回收時,會釋放應用程序不再使用的對象的內存,它通過檢查應用程序的跟來確定不再使用的對象,每個應用程序獨有一組根,每個根或者引用托管堆中的對象,或者設置為空。





0
0
查看评论

C#116课的主要内容

今天主要学习了一下内容:          HTMLWeb Server              如果希望向世界发布你的网站,那么你必须把它存放在web服务器上。 ...
  • jackli_zhang012
  • jackli_zhang012
  • 2017-03-13 22:33
  • 83

C#173课的主要内容

今天主要学习了一下知识点:
  • jackli_zhang012
  • jackli_zhang012
  • 2017-06-12 22:46
  • 76

C#69课的主要内容

了解菜单栏,主菜单和子菜单3个概念 掌握菜单的快捷方式操作 掌握菜单分割条的设置 学习菜单导航的实际应用 菜单的实践操作 案例学习:建立简单的菜单 案例学习:加载皮肤动态连接库文件并美化界面 winform可用于windows窗体应用程序的开发 windows窗体控件是从system...
  • jackli_zhang012
  • jackli_zhang012
  • 2016-12-16 21:04
  • 117

C#182课的主要内容

今天主要讲了一下知识点:      HTML表单元素 本章描述所有HTML表单元素 元素 最重要的表单元素是元素 元素根据不同的type属性,可以变化为多种形态。 注释:下一章讲解所有HTML输入类型 元素 元素定义下拉列表 实例 元素定义待选择的选...
  • jackli_zhang012
  • jackli_zhang012
  • 2017-06-23 21:46
  • 100

C#35课的主要内容

了解statusstrip控件的基本属性及方法 学习用statusstrip控件统计文本字数信息 学习通过statusstrip控件显示综合信息 学习通过statusstrip控件显示进度条信息 了解timer控件的属性及方法,事件 学习用timer控件控制其他控件位移 学习显示计算机运...
  • jackli_zhang012
  • jackli_zhang012
  • 2016-10-18 20:47
  • 59

C#130课的主要内容

今天主要学习了一下知识内容:         HTML5Canvas vs SVG          canvas 和SVG都允许你在浏览器中创建图形,但是他们在根本上是不同的    ...
  • jackli_zhang012
  • jackli_zhang012
  • 2017-04-01 21:23
  • 50

C#138课的主要内容

今天主要学习了一下知识点:           HTML表单          HTML表单用于搜集不同类型的用户输入         元素  ...
  • jackli_zhang012
  • jackli_zhang012
  • 2017-04-14 23:00
  • 47

C#78课的主要内容

。netframework核心开发 基本开发任务和技巧,其中包括如何创建,配置,调式和部署,netframework应用程序。 开发基础知识 辅助功能 配置应用程序 数据访问和建模 调试· 跟仲和分析 部署,netframework和应用程序 编码和本地化 并行执行(解释什么是并行执行以及...
  • jackli_zhang012
  • jackli_zhang012
  • 2017-01-09 20:27
  • 82

C#163课的主要内容

今天主要学习了一下知识点: html Web Workers   Web worker是运行在后台的JavaScript,不会影响页面的性能。 什么是Web Worker? 当在HTML页面中执行脚本时,页面是不可相应的,直到脚本以完成。  Web worker是运行在...
  • jackli_zhang012
  • jackli_zhang012
  • 2017-05-19 23:07
  • 56

C#177课的主要内容

今天主要学习了一下知识点: HTML 声明帮助浏览器真确地显示网页。 声明 Web世界中存在许多不同的文档。只 有了解文档的类型,浏览器才能正确地显示文档。 HTML也有多个不同的版本,只有完全明白页面中使用的确切HTML版本,浏览器才能完全正确地显示出HTML页面,这就是的用处。 不是...
  • jackli_zhang012
  • jackli_zhang012
  • 2017-06-17 09:47
  • 84
    个人资料
    • 访问:21421次
    • 积分:2582
    • 等级:
    • 排名:第16699名
    • 原创:254篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条