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