C#基礎之002-基礎概念001

C#關鍵概念

C# 組織結構的關鍵概念是程序 (program)、命名空間 (namespace)、類型 (type)、成員 (member) 和程序集 (assembly)。

C# 程序由一個或多個源文件組成。

類和接口就是類型的示例。

字段 (field)、方法、屬性和事件是成員的示例。

程序集擴展名.exe(應用程序)或.dll(類庫)

CLR、CTS、CLS

CLR:公共語言運行時

CTS:通用類型庫

CLS:公共語言規范

CLR與IL分別是什么含義?

CLR:公共語言運行時,類似于Java中的JVM,Java虛擬機;在.Net環境下,各種編程語言使用一種共同的基礎資源環境。CLR就是具體的編程語言如:C#.NET與操作系統之間的翻譯,同時為具體的編程語言提供資源:

IL,中間語言,也稱MSIL,微軟中間語言,或CIL,通用中間語言;所有.NET源代碼(不管用哪種語言編寫)在進行編譯時都被編譯成IL。在應用程序運行時被即時(Just-In-Time,JIT)編譯器處理成為機器碼,被解釋及執行。

什么是托管代碼和非托管代碼?

托管代碼就是Visual Basic .NET和C#編譯器編譯的代碼。編譯器把代碼編譯成中間語言(IL),而不是能直接在你的電腦上運行的機器碼。比如用C# /http://VB.NET寫的任何代碼都是托管代碼

非托管代碼直接編譯成目標計算機的機械碼,只能運行在編譯出它們的計算機上,或者是其它相同處理器或者幾乎一樣處理器的計算機上。Visual C++可以創建非托管程序。比如COM組件, ActiveX組件和Win32接口函數都是非托管代碼。

托管代碼與非托管代碼的區別

1、托管代碼獨立于平臺和語言,能更好的實現不同語言平臺之間的兼容;

???? 非托管代碼依賴于平臺和語言。

2、托管代碼可享受CLR提供的服務(如安全檢測、垃圾回收等),不需要自己完成這些操作;

?????? 非托管代碼需要自己提供安全檢測、垃圾回收等操作。

托管代碼的執行過程

1、選擇編譯器:選擇一個或多個針對運行庫的語言編譯器,如 Visual Basic、C#、Visual C++、JScript 或許多第三方編譯器(如 Eiffel、Perl 或 COBOL 編譯器)。

2、編譯,將源代碼翻譯為microsoft中間語言(MSIL)并生成需要的元數據。

3、執行,實時 (JIT) 編譯器將 MSIL 翻譯為本機代碼。PS:編譯過程中,代碼通過驗證.

????? 確認 MSIL 和元數據是否可以將代碼確定為類型安全。

4、運行代碼:公共語言運行庫提供使執行能夠發生以及可在執行期間使用的各種服務的結構。

什么是基元類型

由編譯器直接支持的數據類型稱為基元類型,例如:在C#中,int直接映射為System.Int32類型

類型:sbyte / byte / short / ushort /int / uint / long / ulong ? ? ? char / float / double / bool

類型

類型有兩種:值類型 (value type) 和引用類型 (reference type)

值類型存儲是數據,存儲于棧,派生于 System.ValueType

引用類型的變量存儲對其數據的引用稱為對象。存儲于堆。

值類型、靜態變量被

GC回收嗎?

值類型是在棧上, 當某方法返回時, 棧會恢復到該方法調用前的狀態, 該方法在棧上分配的值類型的內存自然就釋放了, 不必等GC。PS:回收引用類型

靜態字段 分配在Loader heap 中,非 GC heap,不受GC控制。
應用程序域卸載的時候回收靜態變量

值類型、引用類型是否可以派生?

值類型密封(seal)的,所以無法派生出新的值類型。

引用類型可以派生出新的類型。

值類型和引用類型的區別

繼承System.Value的類型都是值類型,其他類型都是引用類型。

引用類型可以派生出新的類型,而值類型不能;

引用類型存儲在堆中,而值類型既可存儲在堆中也可以存儲在棧中。

引用類型可以包含null值,值類型不能(可空類型功能允許將null賦給值類型);

引用類型變量的賦值只復制對對象的引用,而不復制對象本身。而將一個值類型變量賦給另一個值類型變量時,將復制包含的值。當比較兩個值類型時,進行的是內容比較;而比較兩個引用類型時,進行的是引用比較。

值類型在內存管理方面具有更好的效率,并且不支持多態,適合用作存儲數據的載體;引用類型支持多態,適合用于定義應用程序的行為。

Int[]是引用類型還是值類型

數組類型繼承System.Array,而System.Array繼承自System.Object。所以所有的數組類型都是引用類型

引用類型各概念

類:包含數據成員(字段)和函數成員(方法、屬性等)的數據結構

接口:像一個協定,作為一個公共函數成員的命名集

委托:對具有特定參數列表和返回類型的方法的引用,通過委托,將方法作為實體賦值給變量和作為參數傳遞

數組類型:通過在某個類型名后加一對方括號來構造的,數組不用聲明就可以應用。例如:int[];

用戶可以自定義類型?

類類型(class type)、結構類型(struct type)、接口類型(interface type)、枚舉類型(enum

type)和委托類型(delegate type)。

哪些類型支持泛型?

類類型、結構類型、接口類型、委托類型

變量

C# 中存在幾種變量(variable),包括字段、數組元素、局部變量和參數,變量表示了存儲位置。

什么是裝箱和拆箱?

裝箱:從值類型轉換到引用類型。

拆箱:從引用類型轉換到值類型。

裝箱

裝箱轉換允許將 value-type 隱式轉換為 reference-type。下列裝箱轉換:

從任何 value-type 到 object 類型。

從任何 value-type 到 System.ValueType 類型。

從任何 non-nullable-value-type 到 value-type

實現的任何 interface-type。

從任何nullable-type到由nullable-type的基礎類型實現的任何interface-type

從任何enum-type到 System.Enum 類型。

從任何具有基礎 enum-type 的 nullable-type 到 System.Enum 類型。

裝箱轉換隱含著復制一份待裝箱的值

拆箱轉換

取消裝箱轉換允許將reference-type顯式轉換為value-type。存在以下拆箱轉換:

從 object 類型到任何 value-type。

從 System.ValueType 類型到任何 value-type。

從任何interface-type到實現了該 interface-type 的任何non-nullable-value-type

從任何interface-type到其基礎類型實現了該interface-type的任何nullable-type

從 System.Enum 類型到任何 enum-type。

從 System.Enum 類型到任何具有基礎 enum-type 的 nullable-type。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,327評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,996評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,316評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,406評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,128評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,524評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,576評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,759評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,310評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,065評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,249評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,821評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,479評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,909評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,140評論 1 290
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,984評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,228評論 2 375

推薦閱讀更多精彩內容