C#圖解教程筆記20170717

2017/7/17

C#和.NET框架

.NET框架,CLR的C#語(yǔ)言

.net框架是一個(gè)獨(dú)立發(fā)布的軟件包靠瞎,包括了CLR,類庫(kù)以及相關(guān)的語(yǔ)言編譯器等工具。C#代碼經(jīng)過(guò)編譯之后再CLR環(huán)境中運(yùn)行志笼。

.NET框架是一種比MFC或COM變成技術(shù)更一致并面向面對(duì)對(duì)象的環(huán)境,它的特點(diǎn)包裹一下幾點(diǎn)把篓。

1.多平臺(tái):該系統(tǒng)可以在廣發(fā)的計(jì)算機(jī)上運(yùn)行纫溃,包括服務(wù)器,桌面機(jī)到PDA和移動(dòng)電話韧掩。

2.行業(yè)標(biāo)準(zhǔn):該系統(tǒng)使用行業(yè)標(biāo)準(zhǔn)的通信協(xié)議紊浩,比如XML,HTTP,SOAP和WSDL。

3.安全性:該系統(tǒng)能提供更加安全的執(zhí)行環(huán)境疗锐,及時(shí)有來(lái)源可疑的代碼存在坊谁。

.NET框架由三部分組成


執(zhí)行環(huán)境稱為CLR(Common Language Runtime,公共語(yǔ)言運(yùn)行庫(kù))。CLR在運(yùn)行期管理程序的執(zhí)行滑臊。

BCL ?基類庫(kù)



大大改進(jìn)的編程環(huán)境

1.面向?qū)ο蟮木幊汰h(huán)境

CLR,BCL和C#被設(shè)計(jì)的完全面對(duì)對(duì)象口芍,并形成良好的集成環(huán)境

2.自動(dòng)垃圾回收

CLR有一項(xiàng)服務(wù)稱為GC(垃圾收集),它能為你自動(dòng)管理內(nèi)存

3.互操作性

.NET框架的設(shè)計(jì)專門考慮了不同的.NET語(yǔ)言雇卷,操作系統(tǒng)或Win32 DLL和COM之間的互操作性?

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

(2).NET提供一種稱為平臺(tái)調(diào)用的特性关划,允許.NET的代碼調(diào)用并使用非.NET的膘融,但通過(guò)標(biāo)準(zhǔn)Win32 DLL 到處的純C函數(shù)的代碼,比如Windows API.

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

4.不需要COM

5.簡(jiǎn)化的部署

6.類型安全性

7.基類庫(kù)

包含以下一些類

通用基礎(chǔ)類:這些類提供了一組極為強(qiáng)大的工具脱货,可以應(yīng)用到廣發(fā)的編程任務(wù)中岛都,比如字符串操作,安全和加密振峻。

集合類:這些類實(shí)現(xiàn)了列表臼疫,字典,散列表以及位數(shù)組

線程和同步類:這些類用于創(chuàng)建多線程程序

XML類:這些用于創(chuàng)建讀取以及操作XML文檔


編譯成CIL

.NET語(yǔ)言的編譯器接受源代碼文件扣孟,并生成名為程序集的輸出文件烫堤。程序集可以使可執(zhí)行的文件或DLL

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

2 程序集包含 的信息中包含下列項(xiàng)目

程序的CIL;

程序中使用的類型的元數(shù)據(jù)鸽斟;

對(duì)其他程序集引用的元數(shù)據(jù)拔创。


編譯成本機(jī)代碼并執(zhí)行

程序的CIL直到他被調(diào)用運(yùn)行時(shí)才會(huì)被編譯成本機(jī)代碼,在運(yùn)行時(shí)富蓄,CLR執(zhí)行下面的步驟(如圖):

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

2立倍、在內(nèi)存中分配空間灭红;

3、把程序集中的可執(zhí)行的代碼發(fā)送給實(shí)時(shí)(Just-in-Time,JIT)編譯器口注,把其中的一部分編譯成本機(jī)代碼变擒。

程序集中的可執(zhí)行的代碼在需要的時(shí)候由JIT編譯器編譯,然后他就被緩存已被再后來(lái)的程序中執(zhí)行寝志。使用這個(gè)方法以為著不被調(diào)用的代碼不會(huì)被編譯成本機(jī)代碼赁项,而且被調(diào)用到的代碼紙杯編譯一次。

一旦CIL被編譯成本機(jī)代碼澈段,CLR就在他運(yùn)行時(shí)管理它悠菜,執(zhí)行像釋放無(wú)助內(nèi)存,檢查數(shù)組邊界败富,檢查參數(shù)類型和管理異常之類的任務(wù)悔醋。

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

非托管代碼:不在CLR控制之下運(yùn)行的代碼芬骄,比如Win32 C/C++ DLL。


編譯和執(zhí)行綜述

無(wú)論原始源文件的語(yǔ)言是什么鹦聪,都遵循同樣的編譯和執(zhí)行過(guò)程


CLR

.NET框架的核心組件是CLR账阻,他在操作系統(tǒng)的頂層并管理程序的執(zhí)行又活,如圖所示硫嘶。CLR還提供下列服務(wù):

自動(dòng)垃圾回收;

安全和認(rèn)證辈灼;

通過(guò)訪問(wèn)BCL(base class library规丽,基類庫(kù))得到廣泛的編程功能蒲牧,包括入院Web服務(wù)和數(shù)據(jù)服務(wù)之類的功能。

CLI

CLI(Common Language Infrastructrue,公共語(yǔ)言基礎(chǔ)結(jié)構(gòu)),他把所有的.NET框架的組件連接成一個(gè)內(nèi)聚的赌莺,一致的系統(tǒng)冰抢。他展示了系統(tǒng)的概念和架構(gòu),并詳細(xì)說(shuō)明了所有軟件都必須堅(jiān)持的規(guī)定和約定艘狭。CLI是一組闡述了系統(tǒng)的架構(gòu)挎扰,規(guī)則和約定的規(guī)范翠订。




CLI的重要組成部分

1.公共類型系統(tǒng)

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

CTS定義了一組豐富的內(nèi)置類型尽超,以及每種類型確定的、詳細(xì)的特性骇吭;

.NET兼容編程語(yǔ)言提供的類型通常映射到CTS中已定義的內(nèi)置類型集的某一個(gè)特殊子集橙弱;

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

2.公共語(yǔ)言貴方

CLS(conmon language specification燥狰,公共語(yǔ)言規(guī)范)詳細(xì)的說(shuō)明了一個(gè).NET兼容編程語(yǔ)言的規(guī)則,屬性和行為斜筐。其主題包裹數(shù)據(jù)類型和龙致,類結(jié)構(gòu)和參數(shù)傳遞。


縮寫回顧




C#編程概述

命名約定

標(biāo)識(shí)符風(fēng)格

Pascal風(fēng)格? 標(biāo)識(shí)符中每個(gè)單詞首字母大寫?? 用于類型名和成員名????? CarDeck,DealersHand

Canel風(fēng)格??? 除第一個(gè)單詞以外顷链,標(biāo)識(shí)符中所有單詞都首字母大寫? 用于本地變量和方法參數(shù)


字段名稱以下劃線開(kāi)頭:_HighTemp目代、_LowTemp.


6種可以有用戶自己創(chuàng)建的類型:

類類型? class;

結(jié)構(gòu)類型 struct?嗤练;

數(shù)組類型 array榛了;

美劇類型 enum;

委托類型 delegate煞抬;

接口類型 interface霜大;



運(yùn)行中的程序使用兩個(gè)內(nèi)存區(qū)域來(lái)儲(chǔ)存數(shù)據(jù):棧和堆。

棧是一個(gè)內(nèi)存數(shù)組革答,是一個(gè)LIFO(last-in first-out战坤,后進(jìn)先出)的數(shù)據(jù)結(jié)構(gòu),棧儲(chǔ)存幾種類型的數(shù)據(jù):

某些類型變量的值残拐;

程序當(dāng)前的執(zhí)行環(huán)境途茫;

傳遞給方法的參數(shù)。

棧的特征

棧有如下幾個(gè)普遍特征:

數(shù)據(jù)只能從棧的頂端插入和刪除溪食;

把數(shù)據(jù)放到棧頂 稱為入棧囊卜;

從棧頂刪除數(shù)據(jù)稱為出棧;


堆是一塊內(nèi)存區(qū)域错沃,堆里的內(nèi)存可以任意順序存入和移除边败。

程序可以在堆里保存數(shù)據(jù),但并不能顯示的刪除它們捎废。CLR的自動(dòng)GC在判斷出程序的代碼將不會(huì)在訪問(wèn)某數(shù)據(jù)項(xiàng)時(shí)笑窜,會(huì)自動(dòng)清除無(wú)主的堆對(duì)象。


值類型?? 只需要一段單獨(dú)的內(nèi)存登疗,用于儲(chǔ)存實(shí)際的數(shù)據(jù)排截,位于棧中

引用類型? 需要兩段內(nèi)存

第一段儲(chǔ)存實(shí)際的數(shù)據(jù)嫌蚤,位于堆中。

第二段是一個(gè)引用断傲,指向數(shù)據(jù)在堆中的存放位置脱吱,引用放在棧里

說(shuō)明:對(duì)于引用類型的任何對(duì)象,他所有的數(shù)據(jù)成員都存放在堆里认罩,無(wú)論他們是指類型還是引用類型箱蝠。


變量

變量是一個(gè)名稱,表示程序執(zhí)行時(shí)儲(chǔ)存在內(nèi)存中的數(shù)據(jù)






類:基礎(chǔ)

類是一個(gè)能儲(chǔ)存數(shù)據(jù)并執(zhí)行代碼的數(shù)據(jù)結(jié)構(gòu)垦垂,它包含以下內(nèi)容:

數(shù)據(jù)成員宦搬,它儲(chǔ)存與類的實(shí)例相關(guān)的數(shù)據(jù),數(shù)據(jù)成員通常模擬該類所表示的顯示世界事務(wù)的特性

函數(shù)成員劫拗,它執(zhí)行代碼间校。函數(shù)成員通常模擬類所表示的顯示世界事務(wù)的功能和操作。


?類是邏輯相關(guān)的數(shù)據(jù)和函數(shù)的封裝页慷,通常代表真實(shí)世界中的或概念上的事務(wù)憔足。

運(yùn)行中的程序是一組相互作用的對(duì)象。

字段和方法是最重要的類成員類型酒繁,字段是數(shù)據(jù)成員滓彰,方法是函數(shù)成員。

字段

字段是隸屬于類的變量

1州袒、他可以是任何類型揭绑,無(wú)論是預(yù)定義類型還是用戶定義類型

2、和所有變量一樣稳析,字段用來(lái)保存數(shù)據(jù)洗做,并具有如下特征:

??它們可以被寫入;

? 它們可以被讀日镁印诚纸;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市陈惰,隨后出現(xiàn)的幾起案子畦徘,更是在濱河造成了極大的恐慌,老刑警劉巖抬闯,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件井辆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡溶握,警方通過(guò)查閱死者的電腦和手機(jī)杯缺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)睡榆,“玉大人萍肆,你說(shuō)我怎么就攤上這事袍榆。” “怎么了塘揣?”我有些...
    開(kāi)封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵包雀,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我亲铡,道長(zhǎng)才写,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任奖蔓,我火速辦了婚禮赞草,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锭硼。我一直安慰自己房资,他們只是感情好蜕劝,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布檀头。 她就那樣靜靜地躺著,像睡著了一般岖沛。 火紅的嫁衣襯著肌膚如雪暑始。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天婴削,我揣著相機(jī)與錄音廊镜,去河邊找鬼。 笑死唉俗,一個(gè)胖子當(dāng)著我的面吹牛嗤朴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播虫溜,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼雹姊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了衡楞?” 一聲冷哼從身側(cè)響起吱雏,我...
    開(kāi)封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瘾境,沒(méi)想到半個(gè)月后歧杏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迷守,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年犬绒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兑凿。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凯力,死狀恐怖眨业,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沮协,我是刑警寧澤龄捡,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站慷暂,受9級(jí)特大地震影響聘殖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜行瑞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一奸腺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧血久,春花似錦突照、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至筑舅,卻和暖如春座慰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背翠拣。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工版仔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人误墓。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓蛮粮,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親谜慌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子然想,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,744評(píng)論 25 707
  • 《深入理解Java虛擬機(jī)》筆記_第一遍 先取看完這本書(JVM)后必須掌握的部分。 第一部分 走近 Java 從傳...
    xiaogmail閱讀 5,067評(píng)論 1 34
  • 基礎(chǔ) .NET概述 參考:http://www.cnblogs.com/yplong/p/3279934.html...
    donite閱讀 1,612評(píng)論 0 8
  • 最近一直在思考畦娄,到底什么才是我的職場(chǎng)資本又沾?我引以為傲的究竟是什么? 01 成長(zhǎng)突破是職場(chǎng)人不斷的自我要求熙卡。增值自己...
    Penn先生閱讀 693評(píng)論 0 0
  • 是杖刷,一段時(shí)間喪一次。我習(xí)慣了驳癌,其實(shí)還蠻想哭的滑燃,我也不知道,有些煎熬颓鲜,甚至可以愛(ài)上女人表窘,愛(ài)上自己的朋友典予,我已經(jīng)分不清...
    akimbo閱讀 173評(píng)論 0 0