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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

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

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

一、名稱解釋:

CLS:common language specilication:通用語(yǔ)言規(guī)范;

CLR:common language Runtime 公共語(yǔ)言運(yùn)行時(shí)。

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

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

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

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

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

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

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

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

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

轉(zhuǎn)載于:https://www.cnblogs.com/gowhy/archive/2011/04/01/2001949.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。