日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

CLS/CLR、c#(等语言)、托管、元数据、程序集 CLR学习第二课

發布時間:2023/12/9 C# 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CLS/CLR、c#(等语言)、托管、元数据、程序集 CLR学习第二课 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、名稱解釋:

CLS:common language specilication:通用語言規范;

CLR:common language Runtime 公共語言運行時。

托管代碼:編譯的代碼直接clr等一層一層的進行 代碼編譯(C#--C#編譯器--CLR(把它編譯為IL)--IL--本地cpu可執行代碼)并進行類型安全驗證、資源釋放等操作。

非托管代碼:c#語言生成的代碼直接由cpu執行,所以需要自己處理資源釋放、類型安全檢查、等一系列的操作。

元數據:包含程序運行所需的一切資源信息,元數據中包含3個表:定義表(Def)、引用表(Ref)、清單表。

其中定義表、引用表:中分別包含了 模塊(ModuleRef、MouduleDef)、類型(type)、方法(Method)、字段(Filed)、參數(Param)、屬性、事件的引用表和定義表(都是在他們后面加Def或者ref)。

清單表:一組元數據的集合,包含程序集中一部分文件名稱、還描述了程序集的版本、語言、發布者、共有打出類型、以及程序所需的所有文件;

清單元數據:AssemblyDef、FileDef、MainfestResourceDef(包含程序集的所以資源條目,和一個該資源在資源文件或者流在FileDef表中的索引,如果該資源不是單獨文件則把它嵌入到PE文件中)、ExportTypesDef(程序集中所有的PE模塊導出的每一個共有類型都在其中;還包括了類型名稱,一個FileDef表中的引用,和一個TypeDef表的索引,清單PE文件中的類型不會在該表中)。清單為程序使用者和其各個部分直接提供了一個層接關系,實現程序集自描述。程序集清單知道該清單所包含的文件是一個程序集的,但是其他程序集卻不知道他們是一個程序集。

codeBase:在配置文件中定義;保存應用程序需要下載的程序集文件,其中包含得有需要下載程序集的url。當程序加載一個程序集時,CLR首先獲得codebase元素的地址,然后在本地機器下緩存中看是否存在該文件,如果存在則加載,不存在拋出FileNotFoundException異常。

程序集(exe、dll):定義了可重用的類型、版本號、安全相關的信息。

二、vs支持很多語言,所有的語言經過自己的編譯器處理,clr處理,最后生成IL代碼。也就是說所有的語言建立在同一個基礎上的,所有可以實現不同語言生成的dll、或者exe文件之間公用,也方便了代碼的反編譯。但是公用exe或者dll文件的標準是他們必須遵循CLS規則。如vb中不區分大小寫、c#中區分、c++中不支持無符號類型等。所有在寫能讓其他語言調用的代碼時必須遵循cls規則,統一原則。才可以相互調用,可以給代碼設置屬性,讓其檢查當前語言編寫規范是否符合cls規則(方法在類上方聲明屬性:assembly:[CLSCompliant(true))] 編譯器就會自動檢查上方cls兼容。

轉載于:https://www.cnblogs.com/gowhy/archive/2011/04/01/2001949.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的CLS/CLR、c#(等语言)、托管、元数据、程序集 CLR学习第二课的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。