




已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
C 基礎(chǔ) 通過這一節(jié)課 可以使聽眾對 NET基本概況和C 開發(fā)語言基本結(jié)構(gòu)和語法有一個概括性的認(rèn)識 1 2 3 4 NET基礎(chǔ) 語言基礎(chǔ) 基本類型 流程控制 NET基礎(chǔ) NET的定義 定義 NET技術(shù)是微軟公司推出的一個全新概念 它代表了一個集合 一個環(huán)境和一個可以作為平臺支持下一代Internet的可編程結(jié)構(gòu) 最終目標(biāo) NET的最終目標(biāo)就是讓用戶在任何地方 任何時間 以及利用任何設(shè)備都能訪問所需的信息 文件和程序 NET平臺 NET開發(fā)平臺包括編程語言 C VisualBasic VisualC NET開發(fā)工具 VisualStudio NET NET框架 NETFramework 為什么選擇 NET 可以同時使用多種開發(fā)語言進行開發(fā)可以利用方便的開發(fā)工具書寫更少的代碼充分利用Windows系統(tǒng)的應(yīng)用程序服務(wù)功能 如先進快速的事件處理和消息隊列機制軟件服務(wù)的發(fā)布良好的繼承性利用ADO NET 數(shù)據(jù)訪問更加簡單 NET架構(gòu) 操作系統(tǒng) 公共語言運行時 CLR VC Net C VB Net F NetFramework類庫 FCL CLR能提供什么 CLR是CommonLanguageRuntime的簡寫 中文翻譯是公共語言運行 全權(quán)負(fù)責(zé)托管代碼的執(zhí)行 主要有內(nèi)存管理和垃圾收集 是 NET的基石 CLR兩個基礎(chǔ)核心 元數(shù)據(jù) 依賴元數(shù)據(jù)進行內(nèi)存管理和垃圾收集等等MSIL中間語言 使得 NET具有跨語言的集成的能力 CLR所支持的語言都由相對應(yīng)的編譯器編譯為MSIL指令 再由CLR中的JIT組件編譯MSIL為機器語言 最后由CLR托管執(zhí)行 NETFramework 包含一個非常大的代碼庫 可以在客戶語言 如C 中通過面向?qū)ο蟮木幊碳夹g(shù)來使用這些代碼 這個庫分為不同的模塊 可以根據(jù)需要來使用其中的各個部分 如 一個模塊包含windows應(yīng)用程序的構(gòu)件 另一個模塊包含web開發(fā)的代碼塊等等 定義了一些基本數(shù)據(jù)類型 以便使用 NETFramework在各種語言之間進行交互作用 這稱為通用類型系統(tǒng) CommonTypeSystem CTS NET程序編譯運行流程 C 源碼 F 源碼 C 源碼 VB NET源碼等等 程序集 元數(shù)據(jù)和MSIL指令 exe或dll 編譯過程 機器代碼 JIT編譯 運行 語言基礎(chǔ) 簡介 C 是一種簡潔 現(xiàn)代 面向?qū)ο笄翌愋桶踩木幊陶Z言 C 特性 垃圾回收 Garbagecollection 將自動回收不再使用的對象所占用的內(nèi)存異常處理 exceptionhandling 提供了結(jié)構(gòu)化和可擴展的錯誤檢測和恢復(fù)方法類型安全 type safe 的語言設(shè)計則避免了讀取未初始化的變量 數(shù)組索引超出邊界或執(zhí)行未經(jīng)檢查的類型強制轉(zhuǎn)換等情形C 是面向?qū)ο蟮恼Z言 然而C 進一步提供了對面向組件編程的支持 注釋 一 注釋就是寫在源代碼中的描述信息 用來幫助開發(fā)人員閱讀源代碼的 注釋信息會在編譯過程中自動過濾掉 不會出現(xiàn)在程序集中 C 支持三種注釋格式 單行注釋 以 開始 此行后續(xù)任何文本都作為注釋內(nèi)容 多行注釋 以 開始 結(jié)束 可跨越多行 XML注釋 以 開始 后面緊跟XML樣式元素 用來描述類型方法 屬性 事件 索引器等等信息 VisualStudio中智能提示的描述信息依賴此注釋 也可在編譯時期導(dǎo)出這些XML格式的注釋到一個XML文檔 注釋 二 classProgram Main方法 命令行參數(shù)staticvoidMain string args 聲明并初始化一個變量 stringinfo helloworld 打印helloworldSystem Console WriteLine info XML格式注釋 多行注釋 注釋內(nèi)容 單行注釋 注釋內(nèi)容 HelloWorld程序 一 usingSystem namespaceNotepad classHelloWorld publicstaticvoidMain Console WriteLine HelloWorld 聲明HelloWorld類 程序入口點 Main的返回類型為void 控制臺類的WriteLine 方法用于顯示輸出結(jié)果 導(dǎo)入System命名空間 聲明命名空間Notepad 將文件保存為HelloWorld cs HelloWorld程序 二 命名空間 C 程序是利用命名空間組織起來的 一種 邏輯文件夾 的概念 開發(fā)人員可以定義自己的命名空間 常用的命名空間如下 標(biāo)識符 一 標(biāo)識符是指標(biāo)識某一個東西的一個名字符號比如 變量名 類型名 參數(shù)名等等 標(biāo)識符以字母或者下劃線 開頭 其余部分允許出現(xiàn)數(shù)字和Unicode轉(zhuǎn)義序列 關(guān)鍵字在以 為前綴的情況下也可以作為標(biāo)識符 C 嚴(yán)格區(qū)分字母大小寫 如Age和age是不同的標(biāo)識符 標(biāo)識符 二 關(guān)鍵字 關(guān)鍵字是一組特殊的 標(biāo)識符 由系統(tǒng)定義 供開發(fā)者使用 因而我們不能再次定義關(guān)鍵字為標(biāo)識符 以 字符開頭時除外 比較常用的有using class static public get set var 等等 其中加 的比較特殊些 稱作上下文關(guān)鍵字 這些關(guān)鍵字只有在特殊的位置才會有意義 如get和set只有在屬性中才有意義 var只能用在局部變量環(huán)境下 聲明 初始化 聲明一個變量的語法 數(shù)據(jù)類型變量名 變量名須為有效標(biāo)識符如 stringname 聲明并初始化一個變量 數(shù)據(jù)類型變量名 初始化值 如 stringname 張三 運算符 一 常用的運算符 運算符 二 大多數(shù)運算符都可以重載 overload 運算符重載允許指定用戶定義的運算符實現(xiàn)來執(zhí)行運算 這些運算的操作數(shù)中至少有一個 甚至所有操作數(shù)都屬于用戶定義的類類型或結(jié)構(gòu)類型 運算符是有優(yōu)先級的 優(yōu)先級高的先運算 表達式 表達式由操作元 operand 和運算符 operator 構(gòu)成 運算元可以是常數(shù) 對象 變量 常量 字段等等 運算符可以是上節(jié)提到的一些運算符 當(dāng)表達式包含多個運算符時 運算符的優(yōu)先級 precedence 控制各運算符的計算順序 例如 表達式x y z按x y z 計算 演示 HelloWorld 基本類型 變量 一 變量 variable 言外之意即是可變的 用來存儲程序所需的數(shù)據(jù) 聲明一個變量的語法結(jié)構(gòu)如下 變量名必須是有效的標(biāo)識符數(shù)據(jù)類型變量名 也可以在聲明的同時初始化該變量 變量名必須是有效的標(biāo)識符 值必須是與變量聲明的數(shù)據(jù)類型兼容 數(shù)據(jù)類型變量名 值 變量 二 classProgram staticvoidMain string args 聲明變量intage 為變量age賦值age 18 聲明name并初始化為李四stringname 李四 常量 一 常量 一經(jīng)初始化就不會再次被改變的 變量 在程序的整個運行過程中不允許改變它的值 編譯時常量 const數(shù)據(jù)類型常量名 值 編譯時常量做為類成員時總是作為static成員出現(xiàn) 不允許自己加static關(guān)鍵字 編譯時常量的值必須是在編譯時期能確定下來的 只支持一些基本數(shù)據(jù)類型 運行時常量 readonly數(shù)據(jù)類型常量名 值 運行時常量可以彌補編譯時常量不能定義復(fù)雜數(shù)據(jù)類型的缺點 常量 二 classProgram 正確 string為基本數(shù)類型conststringNAME CONST conststring 錯誤 Program為自定義復(fù)雜類型constProgramPROGRAM CONST newProgram 正確 readonlystringNAME READONLY readonlystring 正確 可定義任意數(shù)據(jù)類型readonlyProgramPROGRAM READONLY newProgram 結(jié)構(gòu) 一 結(jié)構(gòu) struct 是能夠包含數(shù)據(jù)成員和函數(shù)成員的數(shù)據(jù)結(jié)構(gòu) 結(jié)構(gòu)類型的變量直接存儲該結(jié)構(gòu)的數(shù)據(jù) 所有結(jié)構(gòu)類型都隱式地從類型System ValueType繼承 System ValueType繼承自System Object 結(jié)構(gòu)是值類型 不需要在堆分配 結(jié)構(gòu)類型不允許繼承 結(jié)構(gòu) 二 用struct修飾 表示一個結(jié)構(gòu)類型structPoint publicintx publicinty publicPoint intx inty this x x this y y 枚舉 一 枚舉 enum 是具有一組命名常量的獨特的值 結(jié)構(gòu) 類型每個枚舉類型都有一個相應(yīng)的整型類型 稱為該枚舉類型的基礎(chǔ)類型 underlyingtype 沒有顯式聲明基礎(chǔ)類型的枚舉類型所對應(yīng)的基礎(chǔ)類型是int 枚舉類型的存儲格式和取值范圍由其基礎(chǔ)類型確定 所有枚舉類型默認(rèn)繼承自System Enum類型 System Enum繼承自System ValueType 故枚舉為結(jié)構(gòu)類型 枚舉 二 long表括示基礎(chǔ)類型是long 如果不寫則默認(rèn)為intenumAlignment long 也可不寫 默認(rèn)則是以0開始 依次加1Left 1 Center 0 Right 1 枚舉 三 publicclassTest staticvoidMain 初始化一個枚舉變量Alignmentalignment Alignment Left 輸出 LeftConsole WriteLine alignment 輸出 1Console WriteLine long alignment 獲得基礎(chǔ)類型TypeunderlyingType Enum GetUnderlyingType typeof Alignment 輸出 System Int64 解釋 long關(guān)鍵字映射的類型為System Int64 Console WriteLine underlyingType FullName 數(shù)組 一 數(shù)組 array 是一種包含若干變量的數(shù)據(jù)結(jié)構(gòu) 這些變量都可以通過計算索引進行訪問 數(shù)組中包含的變量 元素 element 具有相同的類型 該類型稱為數(shù)組的元素類型 elementtype 數(shù)組類型為引用類型 因此數(shù)組變量的聲明只是為數(shù)組實例的引用留出空間 在運行時使用new運算符動態(tài)創(chuàng)建 須指定長度 長度在該實例的生存期內(nèi)是固定不變的 數(shù)組元素的索引范圍從0到Length 1 new運算符自動將數(shù)組的元素初始化為它們的默認(rèn)值 例如將所有數(shù)值類型初始化為零 將所有引用類型初始化為null 數(shù)組 二 C 支持一維 多維 交錯數(shù)組 數(shù)組下標(biāo)一般是從0開始 也提供有其他方式支持非從0下標(biāo)開始的數(shù)組 System Array類型是所有數(shù)組類型的抽象基類型 訪問數(shù)組元素使用下標(biāo)方式 array 索引 數(shù)組 三 publicclassTest staticvoidMain 元素個數(shù)為3的int類型數(shù)組int ages newint 3 3X3的多維數(shù)組int i newint 3 3 交錯數(shù)組int j newint 2 j 0 newint 2 3 4 j 1 newint 3 輸出 4Console WriteLine j 0 1 字符串處理 一 寫程序中很大一部分的時間都是在和字符串打交道 微軟給出的 NET類庫中也給出了一些字符串處理的類型 C 中的常用字符串處理類 System StringSystem Text StringBuilder利用String類可以進行字符串的創(chuàng)建 截取 替換 合并等等操作 也可以用 方便的進行字符串的合并 大寫String與小寫string是完全相同的 大寫是指 NET類庫中的String類型 小寫是C 關(guān)鍵字 也是對應(yīng)到String這個類型上去的 比如在C 中int和Int32也是這樣對應(yīng)的 字符串處理 二 String的特別之處 不變性 讀共享 寫復(fù)制 字符串駐留技術(shù) String是引用類型 但其值確是不可變的 即是指已經(jīng)賦值就不能再改變 針對字符串的一些操作 如合并 截取 都會產(chǎn)生出新的String對象 由于寫復(fù)制的特性 在一些需要大量合并字符串的場合就會產(chǎn)生出很多臨時性的String對象 然后又被丟棄 浪費掉不少內(nèi)存 所以類庫中有另一個System Text StringBuilder類型來高效的拼接字符串 字符串處理 三 publicclassTest staticvoidMain Stringname 小明 合并字符串name name 20歲 name name 男生 Console WriteLine name 小明20歲男生 替換空格為 name name Replace Console WriteLine name 小明 20歲 男生 字符串處理 四 publicclassTest staticvoidMain System Text StringBuilderstringBuilder newSystem Text StringBuilder for inti 0 i 1000 i 追加字符串stringBuilder Append i ToString 輸出 1 2 3 4 5 999 Console WriteLine stringBuilder ToString 委托 一 委托類型 delegatetype 表示對具有特定參數(shù)列表和返回類型的方法的引用 通過委托 我們能夠?qū)⒎椒ㄗ鳛閷嶓w賦值給變量和作為參數(shù)傳遞 委托類似于在其他某些語言中的函數(shù)指針的概念 但是與函數(shù)指針不同 委托是面向?qū)ο蟮?并且是類型安全的 委托聲明定義一個從System Delegate類派生的類 委托實例封裝了一個調(diào)用列表 該列表列出了一個或多個方法 每個方法稱為一個可調(diào)用實體 對于實例方法 可調(diào)用實體由該方法和一個相關(guān)聯(lián)的實例組成 對于靜態(tài)方法 可調(diào)用實體僅由一個方法組成 用一個適當(dāng)?shù)膮?shù)集來調(diào)用一個委托實例 就是用此給定的參數(shù)集來調(diào)用該委托實例的每個可調(diào)用實體 委托 二 特性 將方法作為參數(shù)傳遞通常傳遞的是變量 字段 委托則是傳遞方法回調(diào)方法底層代碼定義方法簽名的類型 委托 定義委托成員上層代碼創(chuàng)建方法 創(chuàng)建委托實例 讓需要調(diào)用的方法傳給底層底層通過調(diào)用委托 調(diào)用上層方法多路廣播可以同時維持多個方法的引用 委托是類型安全的DelegateAda DelegateBdb 即使函數(shù)簽名相同 也不能執(zhí)行da db 委托類型都是密封的 sealed 不能繼承 委托 三 重要成員 Targetobject類型的屬性 指向回調(diào)函數(shù)所屬的對象實例 對于實例方法來言 引用的方法是靜態(tài)方法時 Target為nullMethodSystem Reflection MethodInfo類型的屬性 指向回調(diào)函數(shù)Invoke函數(shù) 同步執(zhí)行委托BeginInvoke開始異步執(zhí)行委托EndInvoke完成異步執(zhí)行 委托 四 運算操作 myDelegate newMyDelegate AddNumber add2 將一個委托A與另一個委托B連接 將連接后的新委托 在賦給原委托A實質(zhì)是使用的System Delegate的靜態(tài)方法CombinemyDelegate MyDelegate Delegate Combine myDelegate newMyDelegate AddNumber add2 myDelegate newMyDelegate AddNumber add2 一個委托A的調(diào)用列表中移除另一個委托B的最后一個調(diào)用列表 將移除后的新委托 再賦給原委托A實質(zhì)是使用的System Delegate的靜態(tài)方法RemovemyDelegate MyDelegate Delegate Remove myDelegate newMyDelegate AddNumber add2 委托 五 classTest 聲明一個委托delegatedoubleFunction doublex staticvoidMain 創(chuàng)建一個委托對象Functionf newFunction Square 利用f攜帶的 Square 方法 所以可以用f進行間接調(diào)用Square 也可以寫f 5 這是對f Invoke 5 的語法簡化doubleresult f Invoke 5 System Console WriteLine result 25 staticdoubleSquare doublex returnx x 事件 一 NET的事件模型建立在委托的機制之上 定義事件成員的類型允許類型 或者類型的實例 在某些特定事件發(fā)生時通知其他對象 事件為類型提供了一下三種能力 允許對象登記該事件 允許對象注銷該事件 允許定義事件的對象維持一個登記對象的集合 并在某些特定的事件反生時通知這些對象 事件 二 聲明一個委托publicdelegatevoidComingEvevtHander objectsender EventArgse 老鼠publicclassMouse 此方法原型與ComingEvevtHander委托匹配publicvoidSpeak Objectsender EventArgse Console WriteLine 貓來了 我要逃跑了 事件 三 貓publicclassCat 聲明一個事件publiceventComingEvevtHanderComing 觸發(fā)事件publicvoidOnComing EventArgse if Coming null Coming this e 事件 四 publicclassTest staticvoidMain 初始化一只貓Catcat newCat 初始化一只老鼠Mousemouse newMouse 注冊事件cat Coming newComingEvevtHander mouse Speak 貓來了 調(diào)用注冊的方法 輸出 貓來了 我要逃跑了 cat OnComing EventArgs Empty 流程控制 三種基本流程控制 Ifelse 一 If語句語法 if 布爾條件 語句 布爾條件 假 真 語句 Ifelse 二 Ifelse語句語法 if 布爾條件 語句1 else 語句2 布爾條件 真 語句1 假 語句2 Ifelse 三 Ifelse語句語法 if 布爾條件1 語句1 elseif 布爾條件2 語句2 布爾條件1 真 語句1 假 語句2 布爾條件2 真 假 Ifelse 三 staticvoidMain string args boolisTrue true if isTrue 執(zhí)行System Console WriteLine true if isTrue 不執(zhí)行System Console WriteLine true elseif true 執(zhí)行System Console WriteLine false Switchcase 一 Switchcase是多分支選擇語句 用來實現(xiàn)多分支選擇結(jié)構(gòu) 適合于從一組互斥的分支中選擇一個來執(zhí)行 類似于if語句 但switch語句可以一次將變量與多個值進行比較 而不是僅比較一個 switch參數(shù)后面跟一組case子句 如果switch參數(shù)中的值與某一個case后面的判斷式相等 就執(zhí)行case子句中的代碼 執(zhí)行完后用break語句標(biāo)記每個case代碼的結(jié)尾 跳出switch語句 Switchcase 二 也可在switch語句中包含一個default語句 當(dāng)所有case中的常量表達式的值都沒有與switch中表達式的值相等 就執(zhí)行default子句中的代碼 default子句可有可無 一個switch語句中有且僅有一個default分支 case后的值必須是常量表達式 不允許使用變量 case子句的排放順序無關(guān)緊要 default子句也可放到最前 任何兩個case的值不能相同 Switchcase 三 參數(shù) 語句1 語句2 語句3 語句n 后續(xù)代碼 執(zhí)行流程 case1case2case3casen Switch 參數(shù) Switchcase 四 classProgram staticvoidMain string args DateTimenow DateTime Now DayOfWeekweek now DayOfWeek switch week caseDayOfWeek Saturday Console WriteLine 休息 break caseDayOfWeek Sunday Console WriteLine 休息 break default Console WriteLine 上班 break classProgram staticvoidMain string args DateTimenow DateTime Now DayOfWeekweek now DayOfWeek switch week caseDayOfWeek Saturday caseDayOfWeek Sunday Console WriteLine 休息 break default Console WriteLine 上班 break 合并兩個 case for 一 for語句用來依據(jù)特定條件來多次重復(fù)執(zhí)行某些代碼 語法如下 for 初始化 條件表達式 結(jié)束一次循環(huán)的后續(xù)操作 一些代碼 后續(xù)代碼 1 4 3 5 2 for 二 執(zhí)行流程 1 4 3 5 真 假 在步驟3中一般做些自增等操作以能影響步驟2的操作 使循環(huán)得以繼續(xù)或者終止 2 for 三 classTest staticvoidMain for inti 0 i 100 i System Console WriteLine i foreach 一 foreach語句用于枚舉一個集合的元素 與for語句相比有更簡潔的語法 語法如下 for 迭代變量類型迭代變量名in集合 一些代碼 后續(xù)代碼 foreach 二 classTest staticvoidMain int array newint 1 3 5 7 9 foreach intiteminarray Console WriteLine item while dowhile 一 while循環(huán)的一般形式為 while 條件 這個條件為布爾表達式 循環(huán)體語句 執(zhí)行流程 先判斷條件 即布爾表達式的值 如為真便重復(fù)執(zhí)行循環(huán)體語句 直到條件為假時才結(jié)束循環(huán) 并繼續(xù)執(zhí)行循環(huán)程序外的后續(xù)語句 while dowhile 二 classTest staticvoidMain inti 0 while i 10 System Console WriteLine i i while dowhile 三 do while循環(huán)的一般格式為 do 循環(huán)體語句 while 測試條件 執(zhí)行流程 先執(zhí)行循環(huán)體語句 然后測試while中的條件 如果測試條件為true 就再次執(zhí)行循環(huán)體語句 直到測試結(jié)果為false時 就退出循環(huán) while dowhile 四 classTest staticvoidMain inti 0 do System Console WriteLine i i 這個while條件后面是有分號的 是必須的 while i 10 while dowhile 五 do while與while的不同之處在于 do while它是先執(zhí)行循環(huán)中的語句 然后
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦勞動合同范例
- 供貨合同范例海鮮
- 精益求精的2025年工程經(jīng)濟試題及答案
- 2025年工程管理學(xué)習(xí)心態(tài)試題及答案
- 行政管理??平?jīng)濟法概論復(fù)習(xí)試題及答案
- 2025年工程經(jīng)濟實踐應(yīng)用試題及答案
- 2025年市政工程考試實戰(zhàn)演練與經(jīng)驗總結(jié)及試題及答案
- 經(jīng)濟學(xué)中定量與定性分析的試題及答案
- 初級裝修服務(wù)合同范例
- 出租玩偶衣服合同范例
- GB/T 4340.3-2025金屬材料維氏硬度試驗第3部分:標(biāo)準(zhǔn)硬度塊的標(biāo)定
- 娘家陪嫁協(xié)議書范本
- 校服征訂家長協(xié)議書
- 2025年中考語文專題復(fù)習(xí)《文言文斷句》課件
- 護士法律法規(guī)知識培訓(xùn)課件
- 信貸業(yè)務(wù)法律風(fēng)險防范
- 冷鏈物流司機崗位職責(zé)與工作流程介紹
- 資源與運營管理-第二次形考任務(wù)-國開-參考資料
- 2型糖尿病中西醫(yī)結(jié)合診療指南(2025年)解讀課件
- 2025-2030激活素A行業(yè)市場現(xiàn)狀供需分析及重點企業(yè)投資評估規(guī)劃分析研究報告
- 多尺度矢量數(shù)據(jù)融合-全面剖析
評論
0/150
提交評論