1.什么是MSIL(IL)戒洼?
在.Net平臺(tái)下伍茄,不僅僅只可以運(yùn)行C#,編寫的程序施逾,還有VB.Ne,F#等敷矫。IL(微軟中間語言)是程序最終編譯的可執(zhí)行的二進(jìn)制代碼(托管代碼),不同語言最終都編譯成標(biāo)準(zhǔn)的IL汉额,這樣C#可以調(diào)用VB.Net編寫的程序集(Assmebly, dll曹仗、exe)。在不同平臺(tái)下:不同語言可以互聯(lián)互通蠕搜,互相調(diào)用怎茫。
2.什么是CTS?
不同語言的數(shù)據(jù)類型表示是不一樣的,比如VB.Net中Integer表示C#中的int 妓灌。
.Net平臺(tái)規(guī)定了通用數(shù)據(jù)類型CTS(Comment Type System :通用數(shù)據(jù)類型)轨蛤,各個(gè)編譯器把數(shù)據(jù)類型都翻譯為CTS規(guī)定的類型。c#中 int翻譯為Int32虫埂。
int是關(guān)鍵字祥山,Int32不是,是CTS中的類型掉伏。
string和String 缝呕,object和Object的區(qū)別也是,c#中的類型和CTS中的類型的區(qū)別斧散,它兩不是一個(gè)東西供常。
3.什么是CLS?
不同語言語法是不一樣的鸡捐,比如C#中定義一個(gè)類繼承 class A:B{}栈暇,VB.Net中類繼承 Class A Inherits B。
.Net平臺(tái)規(guī)定了通用語言規(guī)范(CLS Comment Language Specification)箍镜。
4.什么是CLR源祈?
IL代碼由公共語言運(yùn)行時(shí)(CLR Comment Lanaguage Runtime)驅(qū)動(dòng)運(yùn)行煎源,CLR提供了垃圾回收(GC,Garbage Collection新博,沒有任何引用對(duì)象可以被自動(dòng)回收,分析對(duì)象什么時(shí)候可以被回收)脚草。
順便一提
JIT(即時(shí)編譯器)
值類型是放“棧內(nèi)存”中的赫悄,引用類型是放”堆內(nèi)存“中的,棧內(nèi)存對(duì)象會(huì)在所在執(zhí)行范圍結(jié)束后自動(dòng)釋放馏慨,堆內(nèi)存對(duì)象由GC回收埂淮。