C#圖解教程筆記20170717

2017/7/17

C#和.NET框架

.NET框架,CLR的C#語言

.net框架是一個獨立發布的軟件包,包括了CLR,類庫以及相關的語言編譯器等工具。C#代碼經過編譯之后再CLR環境中運行。

.NET框架是一種比MFC或COM變成技術更一致并面向面對對象的環境,它的特點包裹一下幾點。

1.多平臺:該系統可以在廣發的計算機上運行,包括服務器,桌面機到PDA和移動電話。

2.行業標準:該系統使用行業標準的通信協議,比如XML,HTTP,SOAP和WSDL。

3.安全性:該系統能提供更加安全的執行環境,及時有來源可疑的代碼存在。

.NET框架由三部分組成


執行環境稱為CLR(Common Language Runtime,公共語言運行庫)。CLR在運行期管理程序的執行。

BCL ?基類庫



大大改進的編程環境

1.面向對象的編程環境

CLR,BCL和C#被設計的完全面對對象,并形成良好的集成環境

2.自動垃圾回收

CLR有一項服務稱為GC(垃圾收集),它能為你自動管理內存

3.互操作性

.NET框架的設計專門考慮了不同的.NET語言,操作系統或Win32 DLL和COM之間的互操作性?

(1).NET語言的互操作性允許不同的.NET語言編寫的類,只需要遵循一定的規則即可。

(2).NET提供一種稱為平臺調用的特性,允許.NET的代碼調用并使用非.NET的,但通過標準Win32 DLL 到處的純C函數的代碼,比如Windows API.

(3).NET框架還允許與COM的互操作。.NET軟件組件能調用COM組件,而且COM也能調用.NET組件,就像它們是COM組件一樣。

4.不需要COM

5.簡化的部署

6.類型安全性

7.基類庫

包含以下一些類

通用基礎類:這些類提供了一組極為強大的工具,可以應用到廣發的編程任務中,比如字符串操作,安全和加密。

集合類:這些類實現了列表,字典,散列表以及位數組

線程和同步類:這些類用于創建多線程程序

XML類:這些用于創建讀取以及操作XML文檔


編譯成CIL

.NET語言的編譯器接受源代碼文件,并生成名為程序集的輸出文件。程序集可以使可執行的文件或DLL

1 程序集里的代碼并不是本機代碼,而是一種名稱為CIL(Common Intermediate Language,公共中間語言)的中間語言

2 程序集包含 的信息中包含下列項目

程序的CIL;

程序中使用的類型的元數據;

對其他程序集引用的元數據。


編譯成本機代碼并執行

程序的CIL直到他被調用運行時才會被編譯成本機代碼,在運行時,CLR執行下面的步驟(如圖):

1、檢查程序集的安全特性;

2、在內存中分配空間;

3、把程序集中的可執行的代碼發送給實時(Just-in-Time,JIT)編譯器,把其中的一部分編譯成本機代碼。

程序集中的可執行的代碼在需要的時候由JIT編譯器編譯,然后他就被緩存已被再后來的程序中執行。使用這個方法以為著不被調用的代碼不會被編譯成本機代碼,而且被調用到的代碼紙杯編譯一次。

一旦CIL被編譯成本機代碼,CLR就在他運行時管理它,執行像釋放無助內存,檢查數組邊界,檢查參數類型和管理異常之類的任務。

托管代碼:為.NET框架編寫的代碼,需要CLR。

非托管代碼:不在CLR控制之下運行的代碼,比如Win32 C/C++ DLL。


編譯和執行綜述

無論原始源文件的語言是什么,都遵循同樣的編譯和執行過程


CLR

.NET框架的核心組件是CLR,他在操作系統的頂層并管理程序的執行,如圖所示。CLR還提供下列服務:

自動垃圾回收;

安全和認證;

通過訪問BCL(base class library,基類庫)得到廣泛的編程功能,包括入院Web服務和數據服務之類的功能。

CLI

CLI(Common Language Infrastructrue,公共語言基礎結構),他把所有的.NET框架的組件連接成一個內聚的,一致的系統。他展示了系統的概念和架構,并詳細說明了所有軟件都必須堅持的規定和約定。CLI是一組闡述了系統的架構,規則和約定的規范。




CLI的重要組成部分

1.公共類型系統

CTS(Common Type System,公共類型系統)定義了那些在托管代碼中一定會使用的類型的特征。CTS的一些重要方面如下:

CTS定義了一組豐富的內置類型,以及每種類型確定的、詳細的特性;

.NET兼容編程語言提供的類型通常映射到CTS中已定義的內置類型集的某一個特殊子集;

CTS最重要的特征之一是所有類型都集成自公共的基類——object。

2.公共語言貴方

CLS(conmon language specification,公共語言規范)詳細的說明了一個.NET兼容編程語言的規則,屬性和行為。其主題包裹數據類型和,類結構和參數傳遞。


縮寫回顧




C#編程概述

命名約定

標識符風格

Pascal風格? 標識符中每個單詞首字母大寫?? 用于類型名和成員名????? CarDeck,DealersHand

Canel風格??? 除第一個單詞以外,標識符中所有單詞都首字母大寫? 用于本地變量和方法參數


字段名稱以下劃線開頭:_HighTemp、_LowTemp.


6種可以有用戶自己創建的類型:

類類型? class;

結構類型 struct?;

數組類型 array;

美劇類型 enum;

委托類型 delegate;

接口類型 interface;



運行中的程序使用兩個內存區域來儲存數據:棧和堆。

棧是一個內存數組,是一個LIFO(last-in first-out,后進先出)的數據結構,棧儲存幾種類型的數據:

某些類型變量的值;

程序當前的執行環境;

傳遞給方法的參數。

棧的特征

棧有如下幾個普遍特征:

數據只能從棧的頂端插入和刪除;

把數據放到棧頂 稱為入棧;

從棧頂刪除數據稱為出棧;


堆是一塊內存區域,堆里的內存可以任意順序存入和移除。

程序可以在堆里保存數據,但并不能顯示的刪除它們。CLR的自動GC在判斷出程序的代碼將不會在訪問某數據項時,會自動清除無主的堆對象。


值類型?? 只需要一段單獨的內存,用于儲存實際的數據,位于棧中

引用類型? 需要兩段內存

第一段儲存實際的數據,位于堆中。

第二段是一個引用,指向數據在堆中的存放位置,引用放在棧里

說明:對于引用類型的任何對象,他所有的數據成員都存放在堆里,無論他們是指類型還是引用類型。


變量

變量是一個名稱,表示程序執行時儲存在內存中的數據






類:基礎

類是一個能儲存數據并執行代碼的數據結構,它包含以下內容:

數據成員,它儲存與類的實例相關的數據,數據成員通常模擬該類所表示的顯示世界事務的特性

函數成員,它執行代碼。函數成員通常模擬類所表示的顯示世界事務的功能和操作。


?類是邏輯相關的數據和函數的封裝,通常代表真實世界中的或概念上的事務。

運行中的程序是一組相互作用的對象。

字段和方法是最重要的類成員類型,字段是數據成員,方法是函數成員。

字段

字段是隸屬于類的變量

1、他可以是任何類型,無論是預定義類型還是用戶定義類型

2、和所有變量一樣,字段用來保存數據,并具有如下特征:

??它們可以被寫入;

? 它們可以被讀取;

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

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,661評論 25 708
  • 《深入理解Java虛擬機》筆記_第一遍 先取看完這本書(JVM)后必須掌握的部分。 第一部分 走近 Java 從傳...
    xiaogmail閱讀 5,132評論 1 34
  • 基礎 .NET概述 參考:http://www.cnblogs.com/yplong/p/3279934.html...
    donite閱讀 1,635評論 0 8
  • 最近一直在思考,到底什么才是我的職場資本?我引以為傲的究竟是什么? 01 成長突破是職場人不斷的自我要求。增值自己...
    Penn先生閱讀 724評論 0 0
  • 是,一段時間喪一次。我習慣了,其實還蠻想哭的,我也不知道,有些煎熬,甚至可以愛上女人,愛上自己的朋友,我已經分不清...
    akimbo閱讀 179評論 0 0