关闭

C#74课的主要内容

65人阅读 评论(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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:16148次
    • 积分:2559
    • 等级:
    • 排名:第16014名
    • 原创:254篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条