




已閱讀5頁,還剩70頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C 基礎 通過這一節課 可以使聽眾對 NET基本概況和C 開發語言基本結構和語法有一個概括性的認識 1 2 3 4 NET基礎 語言基礎 基本類型 流程控制 NET基礎 NET的定義 定義 NET技術是微軟公司推出的一個全新概念 它代表了一個集合 一個環境和一個可以作為平臺支持下一代Internet的可編程結構 最終目標 NET的最終目標就是讓用戶在任何地方 任何時間 以及利用任何設備都能訪問所需的信息 文件和程序 NET平臺 NET開發平臺包括編程語言 C VisualBasic VisualC NET開發工具 VisualStudio NET NET框架 NETFramework 為什么選擇 NET 可以同時使用多種開發語言進行開發可以利用方便的開發工具書寫更少的代碼充分利用Windows系統的應用程序服務功能 如先進快速的事件處理和消息隊列機制軟件服務的發布良好的繼承性利用ADO NET 數據訪問更加簡單 NET架構 操作系統 公共語言運行時 CLR VC Net C VB Net F NetFramework類庫 FCL CLR能提供什么 CLR是CommonLanguageRuntime的簡寫 中文翻譯是公共語言運行 全權負責托管代碼的執行 主要有內存管理和垃圾收集 是 NET的基石 CLR兩個基礎核心 元數據 依賴元數據進行內存管理和垃圾收集等等MSIL中間語言 使得 NET具有跨語言的集成的能力 CLR所支持的語言都由相對應的編譯器編譯為MSIL指令 再由CLR中的JIT組件編譯MSIL為機器語言 最后由CLR托管執行 NETFramework 包含一個非常大的代碼庫 可以在客戶語言 如C 中通過面向對象的編程技術來使用這些代碼 這個庫分為不同的模塊 可以根據需要來使用其中的各個部分 如 一個模塊包含windows應用程序的構件 另一個模塊包含web開發的代碼塊等等 定義了一些基本數據類型 以便使用 NETFramework在各種語言之間進行交互作用 這稱為通用類型系統 CommonTypeSystem CTS NET程序編譯運行流程 C 源碼 F 源碼 C 源碼 VB NET源碼等等 程序集 元數據和MSIL指令 exe或dll 編譯過程 機器代碼 JIT編譯 運行 語言基礎 簡介 C 是一種簡潔 現代 面向對象且類型安全的編程語言 C 特性 垃圾回收 Garbagecollection 將自動回收不再使用的對象所占用的內存異常處理 exceptionhandling 提供了結構化和可擴展的錯誤檢測和恢復方法類型安全 type safe 的語言設計則避免了讀取未初始化的變量 數組索引超出邊界或執行未經檢查的類型強制轉換等情形C 是面向對象的語言 然而C 進一步提供了對面向組件編程的支持 注釋 一 注釋就是寫在源代碼中的描述信息 用來幫助開發人員閱讀源代碼的 注釋信息會在編譯過程中自動過濾掉 不會出現在程序集中 C 支持三種注釋格式 單行注釋 以 開始 此行后續任何文本都作為注釋內容 多行注釋 以 開始 結束 可跨越多行 XML注釋 以 開始 后面緊跟XML樣式元素 用來描述類型方法 屬性 事件 索引器等等信息 VisualStudio中智能提示的描述信息依賴此注釋 也可在編譯時期導出這些XML格式的注釋到一個XML文檔 注釋 二 classProgram Main方法 命令行參數staticvoidMain string args 聲明并初始化一個變量 stringinfo helloworld 打印helloworldSystem Console WriteLine info XML格式注釋 多行注釋 注釋內容 單行注釋 注釋內容 HelloWorld程序 一 usingSystem namespaceNotepad classHelloWorld publicstaticvoidMain Console WriteLine HelloWorld 聲明HelloWorld類 程序入口點 Main的返回類型為void 控制臺類的WriteLine 方法用于顯示輸出結果 導入System命名空間 聲明命名空間Notepad 將文件保存為HelloWorld cs HelloWorld程序 二 命名空間 C 程序是利用命名空間組織起來的 一種 邏輯文件夾 的概念 開發人員可以定義自己的命名空間 常用的命名空間如下 標識符 一 標識符是指標識某一個東西的一個名字符號比如 變量名 類型名 參數名等等 標識符以字母或者下劃線 開頭 其余部分允許出現數字和Unicode轉義序列 關鍵字在以 為前綴的情況下也可以作為標識符 C 嚴格區分字母大小寫 如Age和age是不同的標識符 標識符 二 關鍵字 關鍵字是一組特殊的 標識符 由系統定義 供開發者使用 因而我們不能再次定義關鍵字為標識符 以 字符開頭時除外 比較常用的有using class static public get set var 等等 其中加 的比較特殊些 稱作上下文關鍵字 這些關鍵字只有在特殊的位置才會有意義 如get和set只有在屬性中才有意義 var只能用在局部變量環境下 聲明 初始化 聲明一個變量的語法 數據類型變量名 變量名須為有效標識符如 stringname 聲明并初始化一個變量 數據類型變量名 初始化值 如 stringname 張三 運算符 一 常用的運算符 運算符 二 大多數運算符都可以重載 overload 運算符重載允許指定用戶定義的運算符實現來執行運算 這些運算的操作數中至少有一個 甚至所有操作數都屬于用戶定義的類類型或結構類型 運算符是有優先級的 優先級高的先運算 表達式 表達式由操作元 operand 和運算符 operator 構成 運算元可以是常數 對象 變量 常量 字段等等 運算符可以是上節提到的一些運算符 當表達式包含多個運算符時 運算符的優先級 precedence 控制各運算符的計算順序 例如 表達式x y z按x y z 計算 演示 HelloWorld 基本類型 變量 一 變量 variable 言外之意即是可變的 用來存儲程序所需的數據 聲明一個變量的語法結構如下 變量名必須是有效的標識符數據類型變量名 也可以在聲明的同時初始化該變量 變量名必須是有效的標識符 值必須是與變量聲明的數據類型兼容 數據類型變量名 值 變量 二 classProgram staticvoidMain string args 聲明變量intage 為變量age賦值age 18 聲明name并初始化為李四stringname 李四 常量 一 常量 一經初始化就不會再次被改變的 變量 在程序的整個運行過程中不允許改變它的值 編譯時常量 const數據類型常量名 值 編譯時常量做為類成員時總是作為static成員出現 不允許自己加static關鍵字 編譯時常量的值必須是在編譯時期能確定下來的 只支持一些基本數據類型 運行時常量 readonly數據類型常量名 值 運行時常量可以彌補編譯時常量不能定義復雜數據類型的缺點 常量 二 classProgram 正確 string為基本數類型conststringNAME CONST conststring 錯誤 Program為自定義復雜類型constProgramPROGRAM CONST newProgram 正確 readonlystringNAME READONLY readonlystring 正確 可定義任意數據類型readonlyProgramPROGRAM READONLY newProgram 結構 一 結構 struct 是能夠包含數據成員和函數成員的數據結構 結構類型的變量直接存儲該結構的數據 所有結構類型都隱式地從類型System ValueType繼承 System ValueType繼承自System Object 結構是值類型 不需要在堆分配 結構類型不允許繼承 結構 二 用struct修飾 表示一個結構類型structPoint publicintx publicinty publicPoint intx inty this x x this y y 枚舉 一 枚舉 enum 是具有一組命名常量的獨特的值 結構 類型每個枚舉類型都有一個相應的整型類型 稱為該枚舉類型的基礎類型 underlyingtype 沒有顯式聲明基礎類型的枚舉類型所對應的基礎類型是int 枚舉類型的存儲格式和取值范圍由其基礎類型確定 所有枚舉類型默認繼承自System Enum類型 System Enum繼承自System ValueType 故枚舉為結構類型 枚舉 二 long表括示基礎類型是long 如果不寫則默認為intenumAlignment long 也可不寫 默認則是以0開始 依次加1Left 1 Center 0 Right 1 枚舉 三 publicclassTest staticvoidMain 初始化一個枚舉變量Alignmentalignment Alignment Left 輸出 LeftConsole WriteLine alignment 輸出 1Console WriteLine long alignment 獲得基礎類型TypeunderlyingType Enum GetUnderlyingType typeof Alignment 輸出 System Int64 解釋 long關鍵字映射的類型為System Int64 Console WriteLine underlyingType FullName 數組 一 數組 array 是一種包含若干變量的數據結構 這些變量都可以通過計算索引進行訪問 數組中包含的變量 元素 element 具有相同的類型 該類型稱為數組的元素類型 elementtype 數組類型為引用類型 因此數組變量的聲明只是為數組實例的引用留出空間 在運行時使用new運算符動態創建 須指定長度 長度在該實例的生存期內是固定不變的 數組元素的索引范圍從0到Length 1 new運算符自動將數組的元素初始化為它們的默認值 例如將所有數值類型初始化為零 將所有引用類型初始化為null 數組 二 C 支持一維 多維 交錯數組 數組下標一般是從0開始 也提供有其他方式支持非從0下標開始的數組 System Array類型是所有數組類型的抽象基類型 訪問數組元素使用下標方式 array 索引 數組 三 publicclassTest staticvoidMain 元素個數為3的int類型數組int ages newint 3 3X3的多維數組int i newint 3 3 交錯數組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類可以進行字符串的創建 截取 替換 合并等等操作 也可以用 方便的進行字符串的合并 大寫String與小寫string是完全相同的 大寫是指 NET類庫中的String類型 小寫是C 關鍵字 也是對應到String這個類型上去的 比如在C 中int和Int32也是這樣對應的 字符串處理 二 String的特別之處 不變性 讀共享 寫復制 字符串駐留技術 String是引用類型 但其值確是不可變的 即是指已經賦值就不能再改變 針對字符串的一些操作 如合并 截取 都會產生出新的String對象 由于寫復制的特性 在一些需要大量合并字符串的場合就會產生出很多臨時性的String對象 然后又被丟棄 浪費掉不少內存 所以類庫中有另一個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 表示對具有特定參數列表和返回類型的方法的引用 通過委托 我們能夠將方法作為實體賦值給變量和作為參數傳遞 委托類似于在其他某些語言中的函數指針的概念 但是與函數指針不同 委托是面向對象的 并且是類型安全的 委托聲明定義一個從System Delegate類派生的類 委托實例封裝了一個調用列表 該列表列出了一個或多個方法 每個方法稱為一個可調用實體 對于實例方法 可調用實體由該方法和一個相關聯的實例組成 對于靜態方法 可調用實體僅由一個方法組成 用一個適當的參數集來調用一個委托實例 就是用此給定的參數集來調用該委托實例的每個可調用實體 委托 二 特性 將方法作為參數傳遞通常傳遞的是變量 字段 委托則是傳遞方法回調方法底層代碼定義方法簽名的類型 委托 定義委托成員上層代碼創建方法 創建委托實例 讓需要調用的方法傳給底層底層通過調用委托 調用上層方法多路廣播可以同時維持多個方法的引用 委托是類型安全的DelegateAda DelegateBdb 即使函數簽名相同 也不能執行da db 委托類型都是密封的 sealed 不能繼承 委托 三 重要成員 Targetobject類型的屬性 指向回調函數所屬的對象實例 對于實例方法來言 引用的方法是靜態方法時 Target為nullMethodSystem Reflection MethodInfo類型的屬性 指向回調函數Invoke函數 同步執行委托BeginInvoke開始異步執行委托EndInvoke完成異步執行 委托 四 運算操作 myDelegate newMyDelegate AddNumber add2 將一個委托A與另一個委托B連接 將連接后的新委托 在賦給原委托A實質是使用的System Delegate的靜態方法CombinemyDelegate MyDelegate Delegate Combine myDelegate newMyDelegate AddNumber add2 myDelegate newMyDelegate AddNumber add2 一個委托A的調用列表中移除另一個委托B的最后一個調用列表 將移除后的新委托 再賦給原委托A實質是使用的System Delegate的靜態方法RemovemyDelegate MyDelegate Delegate Remove myDelegate newMyDelegate AddNumber add2 委托 五 classTest 聲明一個委托delegatedoubleFunction doublex staticvoidMain 創建一個委托對象Functionf newFunction Square 利用f攜帶的 Square 方法 所以可以用f進行間接調用Square 也可以寫f 5 這是對f Invoke 5 的語法簡化doubleresult f Invoke 5 System Console WriteLine result 25 staticdoubleSquare doublex returnx x 事件 一 NET的事件模型建立在委托的機制之上 定義事件成員的類型允許類型 或者類型的實例 在某些特定事件發生時通知其他對象 事件為類型提供了一下三種能力 允許對象登記該事件 允許對象注銷該事件 允許定義事件的對象維持一個登記對象的集合 并在某些特定的事件反生時通知這些對象 事件 二 聲明一個委托publicdelegatevoidComingEvevtHander objectsender EventArgse 老鼠publicclassMouse 此方法原型與ComingEvevtHander委托匹配publicvoidSpeak Objectsender EventArgse Console WriteLine 貓來了 我要逃跑了 事件 三 貓publicclassCat 聲明一個事件publiceventComingEvevtHanderComing 觸發事件publicvoidOnComing EventArgse if Coming null Coming this e 事件 四 publicclassTest staticvoidMain 初始化一只貓Catcat newCat 初始化一只老鼠Mousemouse newMouse 注冊事件cat Coming newComingEvevtHander mouse Speak 貓來了 調用注冊的方法 輸出 貓來了 我要逃跑了 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 執行System Console WriteLine true if isTrue 不執行System Console WriteLine true elseif true 執行System Console WriteLine false Switchcase 一 Switchcase是多分支選擇語句 用來實現多分支選擇結構 適合于從一組互斥的分支中選擇一個來執行 類似于if語句 但switch語句可以一次將變量與多個值進行比較 而不是僅比較一個 switch參數后面跟一組case子句 如果switch參數中的值與某一個case后面的判斷式相等 就執行case子句中的代碼 執行完后用break語句標記每個case代碼的結尾 跳出switch語句 Switchcase 二 也可在switch語句中包含一個default語句 當所有case中的常量表達式的值都沒有與switch中表達式的值相等 就執行default子句中的代碼 default子句可有可無 一個switch語句中有且僅有一個default分支 case后的值必須是常量表達式 不允許使用變量 case子句的排放順序無關緊要 default子句也可放到最前 任何兩個case的值不能相同 Switchcase 三 參數 語句1 語句2 語句3 語句n 后續代碼 執行流程 case1case2case3casen Switch 參數 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語句用來依據特定條件來多次重復執行某些代碼 語法如下 for 初始化 條件表達式 結束一次循環的后續操作 一些代碼 后續代碼 1 4 3 5 2 for 二 執行流程 1 4 3 5 真 假 在步驟3中一般做些自增等操作以能影響步驟2的操作 使循環得以繼續或者終止 2 for 三 classTest staticvoidMain for inti 0 i 100 i System Console WriteLine i foreach 一 foreach語句用于枚舉一個集合的元素 與for語句相比有更簡潔的語法 語法如下 for 迭代變量類型迭代變量名in集合 一些代碼 后續代碼 foreach 二 classTest staticvoidMain int array newint 1 3 5 7 9 foreach intiteminarray Console WriteLine item while dowhile 一 while循環的一般形式為 while 條件 這個條件為布爾表達式 循環體語句 執行流程 先判斷條件 即布爾表達式的值 如為真便重復執行循環體語句 直到條件為假時才結束循環 并繼續執行循環程序外的后續語句 while dowhile 二 classTest staticvoidMain inti 0 while i 10 System Console WriteLine i i while dowhile 三 do while循環的一般格式為 do 循環體語句 while 測試條件 執行流程 先執行循環體語句 然后測試while中的條件 如果測試條件為true 就再次執行循環體語句 直到測試結果為false時 就退出循環 while dowhile 四 classTest staticvoidMain inti 0 do System Console WriteLine i i 這個while條件后面是有分號的 是必須的 while i 10 while dowhile 五 do while與while的不同之處在于 do while它是先執行循環中的語句 然后
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 開式、閉式泵的工作原理和調試方法
- 交通勸導面試題及答案
- 2025年 廣西高校畢業生“三支一扶”計劃招募考試試卷附答案
- 手工香皂產品營銷活動
- 治未病科健康宣教課件
- 認識自己小學心理健康
- 2025年中國女士格子襯衫行業市場全景分析及前景機遇研判報告
- 學校安全教育匯報材料
- 《數智時代下的供應鏈管理:理論與實踐》課件 第二章 供應鏈管理焦點與核心理念
- 卷材車間技師培訓
- 抖音來客商家門店經營
- 術后鎮痛慢性疼痛癌性疼痛診療標準規范及作業流程
- 2022AHA-ACC-HFSA心衰管理指南解讀
- 智慧能源管理云平臺方案智慧能源綜合服務方案智慧能源管理系統方案38-82
- 玻璃粉燒工藝
- 云計算和邊緣計算在工業互聯網中的融合
- 24年海南生物會考試卷
- 中南大學學科發展與規劃處
- 高危孕產婦管理課件培訓
- 天一大聯考海南省2024屆高一物理第二學期期末考試試題含解析
- 夏季駕駛員安全培訓
評論
0/150
提交評論