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