|
許多文章并不鼓勵在C#下使用指針開發(fā),不過,本文偏偏要這樣做。在大量嘗試C#下使用指針開發(fā)之后,你會對C#有更深的認識。
在說C#下的指針之前,需要提一下C++/CLI。C++/CLI 我們可以把它看作兩部分:Native C++和 Managed C++,兩者可以無縫結(jié)合。對C#,我們也可以把它看作兩部分:Managed C# 和 Unmanaged C#。Managed C# 和 Unmanaged C# 是我杜撰的兩個詞,前者就是我們通常的C#,后者就是使用指針、Struct和非托管內(nèi)存的C#。事實證明,Unmanaged C#也可以玩的十分優(yōu)雅——它具有C語言的大部分特性,卻比C語言好用的多。 C# 與 C++/CLI之間的對應(yīng)關(guān)系見下圖:
C++/CLI默認是 Native C++,而C# 默認是 Unmanaged C# 。除了不能內(nèi)嵌匯編以及編譯方式不同之外,C++/CLI和C#兩者在層面上幾乎是等價的。其中,C++/CLI略微偏底層一點,C#略微偏高層一點。盡管略微偏高層一點,C#仍然可以當(dāng)成準(zhǔn)系統(tǒng)語言來玩。你可以將Unmanaged C# 當(dāng)作 mini c 來玩,區(qū)別只是,C 語言一般是編譯執(zhí)行的,而 Unmanaged C# 是先編譯成 IL ,再使用Ngen編譯成機器碼或在運行時編譯成機器碼執(zhí)行。
在C#下不鼓勵使用指針,這是因為C#的定位是應(yīng)用級的開發(fā),如果我們把它定位為低一級別的開發(fā),那么,就需要大量的使用指針了。大量使用指針進行Unmanaged C#開發(fā),“本質(zhì)”上就是使用 C 語言。只是因為目前 JIT 技術(shù)發(fā)展年代仍不夠久遠,導(dǎo)致 Unmamaged C# 的性能較 C 語言 略低。
下面,畫張圖,描述一下當(dāng)下的C#語言。
NET技術(shù):重新認識C#: 玩轉(zhuǎn)指針,轉(zhuǎn)載需保留來源! 鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。