本書系統(tǒng)論述了C# 5.0的開發(fā)方法、語法知識(shí)、程序結(jié)構(gòu)、編程實(shí)例及編程技巧。全書共分20章,詳細(xì)介紹了如下內(nèi)容: C#與.NET基礎(chǔ)知識(shí),Visual Studio開發(fā)環(huán)境的使用,C#語法基礎(chǔ)與應(yīng)用程序的一般結(jié)構(gòu),面向?qū)ο缶幊袒A(chǔ)知識(shí),開發(fā)控制臺(tái)應(yīng)用程序,數(shù)據(jù)類型轉(zhuǎn)換與字符串的格式化處理,簡單的數(shù)學(xué)運(yùn)算,泛型與集合,變體的應(yīng)用、調(diào)試、糾錯(cuò)與單元測試,Lambda表達(dá)式與LinQ,開發(fā)Windows窗體應(yīng)用程序,WPF基礎(chǔ)知識(shí)與常用技術(shù),異步編程,系統(tǒng)信息管理,操作目錄、文件、流以及序列化技術(shù),訪問數(shù)據(jù)庫,網(wǎng)絡(luò)編程,反射技術(shù)入門以及互操作性。本書適合作為C#入門讀者的自學(xué)圖書,并適合作為相關(guān)高校及培訓(xùn)機(jī)構(gòu)開設(shè)C#及.NET技術(shù)課程的教材。
本書同時(shí)配套制作了160個(gè)實(shí)例源代碼及500分鐘視頻教程,有助于讀者快速動(dòng)手實(shí)踐,提高學(xué)習(xí)效率。
C#(C Sharp,“#”讀作Sharp)是微軟公司推出的一種完全面向?qū)ο蟆⒑唵我讓W(xué)、現(xiàn)代化的新型編程語言。經(jīng)過幾個(gè)版本的演化,C#的語法已然變成更加豐富和成熟,并且具有許多其他高級(jí)程序設(shè)計(jì)語言所不具備的特性,如LinQ語法等。
C#與.NET Framework平臺(tái)高度集成,也就是說,C#編寫的應(yīng)用程序必須依賴于.NET框架,并可以與如Visual Basic.NET、Visual C++.NET等語言編寫的組件進(jìn)行交互。 .NET框架向開發(fā)者公開龐大的API庫,以幫助開發(fā)人員快速構(gòu)建強(qiáng)大的應(yīng)用程序。
本書包含了哪些內(nèi)容
本書的內(nèi)容基于最新的C#版本(目前為5.0)而展開敘述的,主要涉及以下方面的內(nèi)容:
C#與.NET簡介
開發(fā)環(huán)境Visual Studio的使用方法與技巧
C#語法基礎(chǔ)與應(yīng)用程序的一般結(jié)構(gòu)剖析
面向?qū)ο缶幊袒A(chǔ)
開發(fā)控制臺(tái)應(yīng)用程序
數(shù)據(jù)類型轉(zhuǎn)換與字符串的格式化處理
簡單的數(shù)學(xué)運(yùn)算
泛型與集合
變體的應(yīng)用
調(diào)試、糾錯(cuò)與單元測試
Lambda表達(dá)式與LinQ
開發(fā)Windows窗體應(yīng)用程序
WPF基礎(chǔ)知識(shí)與常用技術(shù)
異步編程
系統(tǒng)信息管理
操作對目錄、文件、流以及序列化技術(shù)
訪問數(shù)據(jù)庫
網(wǎng)絡(luò)編程
反射技術(shù)入門
互操作性
如何使用本書
本書采用通俗易懂的講解風(fēng)格,盡量避免晦澀難懂的描述,降低初學(xué)者的理解難度。同時(shí),書中針對每個(gè)知識(shí)點(diǎn)都附有簡單示例程序。讀者在閱讀本書的時(shí)候,可以先閱讀有關(guān)每個(gè)知識(shí)點(diǎn)的說明,然后將附帶的示例程序動(dòng)手操作一遍。在完成書中示例代碼后,讀者應(yīng)該運(yùn)行一下應(yīng)用程序,并觀察程序代碼的執(zhí)行結(jié)果,然后思考一下為什么會(huì)得到這樣的結(jié)果,不要做完示例就拋在腦后,應(yīng)當(dāng)學(xué)會(huì)舉一反三。
當(dāng)讀者了解書中的示例后,也可以進(jìn)行“二次創(chuàng)作”,即適當(dāng)?shù)貙⑹纠a進(jìn)行修改,使其變成一個(gè)新的示例。如此一來,一個(gè)示例可以變成兩個(gè)、三個(gè),甚至更多的示例,讀者從中也學(xué)會(huì)了如何靈活地運(yùn)用學(xué)到的知識(shí)。當(dāng)然,這對于從未進(jìn)行過任何程序開發(fā)的入門者而言,會(huì)有些困難。剛開始的時(shí)候,讀者可以抱著嘗試的心態(tài)去做,不要在乎付出的勞動(dòng)是否馬上得到回報(bào),“欲速則不達(dá)”,只要堅(jiān)持不懈,一點(diǎn)一滴地積累和總結(jié),相信每個(gè)有志于步入編程殿堂的人都會(huì)收獲頗豐。
在學(xué)習(xí)編寫代碼的過程中,讀者不妨學(xué)會(huì)多問幾個(gè)“為什么”。例如,這段代碼為什么要先執(zhí)行第1行,才能去執(zhí)行第2行?如果把第1行代碼與第2行代碼調(diào)換后會(huì)發(fā)生什么?這個(gè)程序?yàn)槭裁匆@樣寫?如果不這樣寫又會(huì)遇到哪些問題?……這種學(xué)習(xí)方法有助于初學(xué)者形成清晰的思路,養(yǎng)成良好的編程習(xí)慣。因?yàn)槌绦虼a都是人寫的,它是事先安排好的一系列指令,交給計(jì)算機(jī)去執(zhí)行,程序代碼體現(xiàn)了人的主觀意志,所以在編寫代碼的時(shí)候,思路非常重要。有了好的思路,并且在滿足技術(shù)條件的情況下,才能開發(fā)出優(yōu)秀的應(yīng)用程序。若思路不清晰,寫出來的代碼會(huì)非常混亂,維護(hù)起來也會(huì)十分困難。
本書適合我嗎
本書內(nèi)容側(cè)重基礎(chǔ)知識(shí),適合以下讀者對象:
希望通過自學(xué)走上編程之路卻不具備基礎(chǔ)知識(shí)的讀者
希望從其他編程語言轉(zhuǎn)向.NET方向的讀者
對C#以及.NET相關(guān)技術(shù)感興趣的讀者
培訓(xùn)機(jī)構(gòu)或高等院校學(xué)習(xí).NET相關(guān)課程的學(xué)員
學(xué)習(xí)本書內(nèi)容,我能做什么
C#與.NET框架緊密結(jié)合,除了可以開發(fā)常見的控制臺(tái)、Windows應(yīng)用程序外,還可以用來開發(fā)Web應(yīng)用程序(如網(wǎng)站)、運(yùn)行在移動(dòng)平臺(tái)上(如Windows Phone)的應(yīng)用程序。另外,通過Mono及相關(guān)技術(shù),還可以使用C#.NET來開發(fā)運(yùn)行在Android、iOS等移動(dòng)終端上的應(yīng)用程序。
勘誤與支持
由于作者水平有限,編寫時(shí)間倉促,書中難免會(huì)有一些不妥之處。望讀者不吝指正。
第1章準(zhǔn)備工作
1.1為什么要編寫程序
1.2C#與.NET框架的關(guān)系
1.3開發(fā)工具——Visual Studio
1.3.1下載和安裝
1.3.2認(rèn)識(shí)Visual Studio
1.3.3使用快捷鍵
1.3.4放置子窗口
1.3.5自動(dòng)隱藏窗口
1.3.6快速啟動(dòng)
1.3.7個(gè)性化設(shè)置
1.4創(chuàng)建第一個(gè)應(yīng)用程序
1.5解決方案與項(xiàng)目的關(guān)系
第2章語法基礎(chǔ)
2.1代碼的基本結(jié)構(gòu)
2.2命名空間
2.2.1為什么要使用命名空間
2.2.2如何訪問命名空間中的成員
2.2.3引入命名空間
2.3Main入口點(diǎn)
2.3.1程序代碼真的從Main方法開始執(zhí)行嗎
2.3.2如何選擇入口點(diǎn)
2.4變量與常量
2.4.1變量
2.4.2變量的生命周期
2.4.3常量
2.5命名規(guī)則
2.6運(yùn)算符
2.6.1示例: 簡單運(yùn)算
2.6.2示例: 自增和自減運(yùn)算
2.6.3示例: 位運(yùn)算
2.6.4示例: 比較運(yùn)算符
2.7流程控制
2.7.1順序執(zhí)行
2.7.2有選擇地執(zhí)行
2.7.3循環(huán)往復(fù)
2.8寫注釋是個(gè)好習(xí)慣
2.9基本的數(shù)據(jù)類型
2.10不要錯(cuò)過《C#語言規(guī)范》文檔
第3章面向?qū)ο缶幊?/span>
3.1類
3.1.1字段
3.1.2屬性
3.1.3方法
3.1.4構(gòu)造函數(shù)與析構(gòu)函數(shù)
3.2結(jié)構(gòu)
3.3引用類型與值類型
3.4ref參數(shù)與out參數(shù)
3.5方法重載
3.6靜態(tài)類與靜態(tài)成員
3.7繼承與多態(tài)
3.7.1可訪問性
3.7.2繼承
3.7.3注意可訪問性要一致
3.7.4隱藏基類的成員
3.7.5覆寫基類成員
3.7.6如何阻止類被繼承
3.8抽象類
3.9接口
3.9.1定義接口
3.9.2接口與多繼承
3.9.3實(shí)現(xiàn)接口
3.9.4顯式實(shí)現(xiàn)接口
3.10擴(kuò)展方法
3.11委托與事件
3.11.1定義和使用委托
3.11.2將方法作為參數(shù)傳遞
3.11.3使用事件
3.12枚舉
3.12.1使用枚舉類型
3.12.2如何獲取枚舉的值列表
3.12.3如何取得枚舉各成員的名字
3.12.4枚舉的位運(yùn)算
3.13特性
3.13.1自定義特性
3.13.2如何把特性應(yīng)用到方法的返回值
3.13.3通過反射技術(shù)檢索特性
3.14數(shù)組
3.14.1定義數(shù)組的幾種方法
3.14.2多維數(shù)組
3.14.3嵌套數(shù)組
3.14.4復(fù)制數(shù)組
3.14.5反轉(zhuǎn)數(shù)組
3.14.6更改數(shù)組的大小
3.14.7在數(shù)組中查找元素
3.14.8靈活使用ArrayList類
第4章控制臺(tái)應(yīng)用程序
4.1輸出文本信息
4.2獲取鍵盤輸入
4.2.1Read方法
4.2.2ReadKey方法
4.2.3ReadLine方法
4.3命令行參數(shù)
4.4設(shè)置控制臺(tái)窗口的外觀
4.5控制臺(tái)窗口的大小和位置
第5章字符串處理與數(shù)學(xué)運(yùn)算
5.1對象的字符串表示形式
5.1.1重寫ToString方法
5.1.2擴(kuò)展方法
5.2字符串的串聯(lián)與拆分
5.2.1使用+運(yùn)算符來串聯(lián)字符串
5.2.2使用Join方法拼接字符串?dāng)?shù)組
5.2.3使用Concat方法創(chuàng)建字符串
5.2.4使用StringBuilder類來創(chuàng)建字符串
5.2.5使用Split方法來拆分字符串
5.3轉(zhuǎn)義字符
5.4英文字母的大小寫轉(zhuǎn)換
5.5Parse和TryParse方法
5.6查找和修改字符串
5.6.1查找索引
5.6.2存在性查找
5.6.3字符串的增刪改
5.6.4填充字符串
5.7格式化字符串
5.7.1IformatProvider接口
5.7.2區(qū)域性相關(guān)的信息
5.7.3實(shí)現(xiàn)字符串的格式化
5.8字符串的復(fù)合格式化
5.9生成隨機(jī)數(shù)
5.10Math類與常用的數(shù)學(xué)運(yùn)算
5.11與日期時(shí)間有關(guān)的計(jì)算
第6章類型轉(zhuǎn)換
6.1隱式轉(zhuǎn)換
6.2顯式轉(zhuǎn)換
6.3可以為null的類型
6.4引用類型的兼容性轉(zhuǎn)換
6.5類型轉(zhuǎn)換幫助器
6.6自定義轉(zhuǎn)換
第7章泛型、集合與變體
7.1泛型類型
7.1.1泛型與類
7.1.2泛型與接口
7.1.3泛型與類型成員
7.1.4泛型與委托
7.1.5泛型約束
7.2集合
7.2.1普通集合
7.2.2泛型集合
7.2.3字典
7.3自定義排序
7.4變體
7.4.1協(xié)變與逆變
7.4.2類型參數(shù)的輸入與輸出
7.4.3必不可少的技巧
第8章糾錯(cuò)與單元測試
8.1實(shí)時(shí)糾正語法錯(cuò)誤
8.2代碼調(diào)試
8.2.1斷點(diǎn)法
8.2.2輸出信息法
8.3斷言
8.4使用日志文件
8.5異常處理
8.6單元測試
第9章匿名方法與Lambda表達(dá)式
9.1匿名方法
9.2Lambda表達(dá)式
9.2.1用于賦值
9.2.2用于參數(shù)傳遞
第10章集成化查詢
10.1LINQ基本語法
10.1.1對查詢結(jié)果類型的巧妙處理
10.1.2延遲執(zhí)行與強(qiáng)制立即執(zhí)行
10.2篩選
10.3排序
10.4分組
10.5更復(fù)雜的查詢
10.5.1動(dòng)態(tài)創(chuàng)建類型
10.5.2聯(lián)合查詢
10.5.3嵌套查詢
第11章Windows窗體應(yīng)用程序
11.1Windows窗體應(yīng)用程序的基本結(jié)構(gòu)
11.1.1客戶區(qū)域
11.1.2控件
11.1.3應(yīng)用程序項(xiàng)目
11.1.4Windows消息循環(huán)
11.1.5演練: 手動(dòng)創(chuàng)建一個(gè)Windows應(yīng)用程序
11.2ApplicationContext類
11.3窗體設(shè)計(jì)器
11.4控件的基類——Control
11.4.1示例: 設(shè)置控件的位置和大小
11.4.2示例: 設(shè)置控件的前景色和背景色
11.4.3示例: 調(diào)整控件的Z順序
11.5常規(guī)控件
11.5.1共享事件處理程序
11.5.2制作“用戶登錄”窗口
11.5.3CheckBox與RadioButton示例
11.5.4使用ListBox控件呈現(xiàn)對象列表
11.5.5自行繪制列表控件的項(xiàng)
11.5.6組合框
11.5.7TextBox的自動(dòng)完成功能
11.5.8多視圖列表
11.5.9圖像呈現(xiàn)控件
11.5.10實(shí)時(shí)報(bào)告進(jìn)度
11.5.11選擇日期和時(shí)間
11.5.12規(guī)范用戶輸入
11.6容器控件
11.6.1在容器內(nèi)部顯示滾動(dòng)條
11.6.2分組面板
11.6.3網(wǎng)格布局面板
11.6.4選項(xiàng)卡
11.6.5自動(dòng)排列內(nèi)容的面板
11.7工具欄和菜單
11.7.1工具欄
11.7.2菜單欄
11.7.3上下文菜單
11.7.4自定義承載控件
11.8對話框
11.8.1“打開文件”和“保存文件”對話框
11.8.2字體選擇對話框
11.8.3顏色選擇對話框
11.8.4自定義對話框
11.9用戶控件
11.10自定義控件
第12章WPF應(yīng)用程序
12.1WPF應(yīng)用程序項(xiàng)目的結(jié)構(gòu)
12.2XAML基礎(chǔ)
12.2.1XAML命名空間
12.2.2代碼隱藏
12.2.3標(biāo)記擴(kuò)展
12.2.4內(nèi)容屬性
12.3依賴項(xiàng)屬性
12.3.1定義和使用依賴項(xiàng)屬性
12.3.2使用元數(shù)據(jù)
12.3.3使用已注冊的依賴項(xiàng)屬性
12.3.4只讀依賴項(xiàng)屬性
12.3.5附加屬性
12.4路由事件
12.4.1路由策略
12.4.2注冊路由事件的類處理程序
12.5認(rèn)識(shí)WPF控件
12.5.1Control類
12.5.2內(nèi)容控件
12.5.3輸入控件
12.6數(shù)據(jù)綁定與視圖呈現(xiàn)
12.6.1用于數(shù)據(jù)綁定的XAML擴(kuò)展標(biāo)記
12.6.2使用InotifyPropertyChanged接口
12.6.3上下文綁定
12.6.4綁定轉(zhuǎn)換器
12.6.5數(shù)據(jù)集合控件
12.6.6數(shù)據(jù)模板
12.6.7數(shù)據(jù)視圖
12.6.8ObservableCollection集合
12.7布局
12.7.1Panel類
12.7.2網(wǎng)格布局(Grid)
12.7.3棧布局(StackPanel)
12.7.4停靠面板(DockPanel)
12.7.5絕對定位(Canvas)
12.7.6自動(dòng)換行(WrapPanel)
12.7.7Z順序
12.8用戶控件與自定義控件
12.9樣式與資源
12.9.1樣式中的觸發(fā)器
12.9.2資源的有效范圍
12.9.3合并資源字典
12.9.4靜態(tài)資源與動(dòng)態(tài)資源
12.10圖形
12.10.1Shape類
12.10.2基本圖形
12.11動(dòng)畫
12.11.1演示圖板
12.11.2簡單動(dòng)畫與關(guān)鍵幀動(dòng)畫
第13章異步編程
13.1為什么要使用異步編程
13.2使用Thread類進(jìn)行異步編程
13.3線程鎖
13.4通過委托執(zhí)行異步操作
13.5并行任務(wù)
13.5.1啟動(dòng)簡單的并行任務(wù)
13.5.2Task與Task類
13.5.3創(chuàng)建可取消的Task
13.6async和await關(guān)鍵字
第14章系統(tǒng)信息管理
14.1管理進(jìn)程
14.1.1管理現(xiàn)有進(jìn)程
14.1.2啟動(dòng)新進(jìn)程
14.1.3重定向輸入/輸出流
14.2管理服務(wù)
14.3WMI查詢
14.4讀取系統(tǒng)參數(shù)
14.4.1ComputerInfo類
14.4.2Environment類
14.4.3SystemInformation類
14.4.4用于WPF的系統(tǒng)信息類
14.5寫入事件日志
第15章文件與流
15.1創(chuàng)建和刪除目錄
15.2創(chuàng)建和刪除文件
15.3流
15.3.1讀寫文件
15.3.2內(nèi)存流
15.4內(nèi)存映射文件
15.5監(jiān)控文件系統(tǒng)的變化
15.6獨(dú)立存儲(chǔ)
15.7壓縮與解壓縮
第16章序列化與反序列化
16.1二進(jìn)制序列化
16.2XML序列化
16.2.1簡單實(shí)現(xiàn)XML序列化和反序列化
16.2.2自定義XML文檔的節(jié)點(diǎn)
16.3SOAP序列化
16.4數(shù)據(jù)協(xié)定
16.5JSON序列化
第17章訪問數(shù)據(jù)庫
17.1SQLLocalDB與SSDT
17.1.1創(chuàng)建和刪除數(shù)據(jù)服務(wù)實(shí)例
17.1.2在Visual Studio中連接和創(chuàng)建數(shù)據(jù)庫
17.1.3編寫SQL語句
17.2示例數(shù)據(jù)庫
17.3連接數(shù)據(jù)庫
17.4ADO.NET基礎(chǔ)
17.4.1使用DataReader來讀取數(shù)據(jù)
17.4.2使用DataAdapter填充數(shù)據(jù)
17.4.3使用數(shù)據(jù)適配器更新數(shù)據(jù)庫
17.4.4參數(shù)化查詢
17.5LinQ to ADO.NET
17.6LinQ to SQL
17.6.1用DataContext直接執(zhí)行SQL語句
17.6.2動(dòng)態(tài)創(chuàng)建數(shù)據(jù)庫
第18章程序集與反射
18.1類庫
18.2反射技術(shù)基礎(chǔ)
18.2.1動(dòng)態(tài)加載程序集
18.2.2獲取類型信息
18.2.3動(dòng)態(tài)創(chuàng)建類型實(shí)例
18.2.4動(dòng)態(tài)調(diào)用類型成員
第19章網(wǎng)絡(luò)編程
19.1Socket編程
19.1.1Socket類
19.1.2TcpListener類與TcpClient類
19.1.3UdpClient類
19.2HTTP通信
19.2.1HttpWebRequest類與HttpWebResponse類
19.2.2WebClient類
19.2.3HttpClient類
19.3獲取網(wǎng)絡(luò)接口信息
19.4向目標(biāo)計(jì)算機(jī)發(fā)送Ping命令
19.5用SMTP發(fā)送電子郵件
19.6訪問Web服務(wù)
第20章互操作性
20.1調(diào)用Win32 API函數(shù)
20.2調(diào)用COM組件