C#基礎增強(4)之秒懂IL、CTS、CLS和CLR

IL(Intermediate Language)

中間語言。.Net 平臺下不僅有 C# 語言,還有 VB.Net、F# 等語言。IL 是程序最終編譯的可執行二進制代碼(託管代碼),相似於 Java 中的 class 字節碼文件,也叫中間語言,不一樣的語言最終都編譯成標準的 IL(MSIL),這樣在 .Net 平臺下不一樣語言之間的程序集就能夠互相調用了。ide

CTS(Common Type System)

公共類型系統。因爲 .Net 平臺上的不一樣語言中的數據類型各不相同,好比整數類型在  VB.Net 中是 Integer ,而 C# 中時 int 。.Net 平臺制定了一個公用類型系統(CTS),各個語言編譯器把本身語言的類型翻譯成 CTS 中的類型。spa

看以下幾個相同功能的示例程序:翻譯

internal class Program
{  
    public static void Main(string[] args)
    {
        int i = 100;
        Console.WriteLine(i);
    }
}
C#
Public Shared Sub Main(ByVal args As String())
    Dim num As Integer = 100
    Console.WriteLine(num)
End Sub
VB.Net

它們最終編譯的 IL 語言都爲以下:code

.method public hidebysig static void Main(string[] args) cil managed
{
    .entrypoint
    .maxstack 1
    .locals init (
        [0] int32 num)
    L_0000: nop 
    L_0001: ldc.i4.s 100
    L_0003: stloc.0 
    L_0004: ldloc.0 
    L_0005: call void [mscorlib]System.Console::WriteLine(int32)
    L_000a: nop 
    L_000b: ret 
}

 
IL

CLS(Common Language Specification)

公共語言規範。不一樣語言的語法不一樣,好比定義一個類 A 繼承自 類 B,C# 的語法是 Class A : B{} ,而 VB.Net 的語法是 Class A Inherits B 。所以 .Net 平臺規定了公共的語言規範(CLS)。對象

CLR(Common Language Runtime)

公共語言運行時。顧名思義,IL 代碼就是由 CLR 驅動運行,而 CLR 相似於 Java 中的 JVM,提供了垃圾回收 GC(Garbage Collection)、JIT(即時編譯器)。blog

值類型變量是放再棧內存中,而引用類型的變量是放置在堆內存,棧內存變量會在方法結束後自動釋放,而堆內存中的對象須要 GC 來回收。繼承

相關文章
相關標籤/搜索