本書以Visual Studio 2012為平臺介紹C#程序設(shè)計(jì)方法,包括.NET Framework體系結(jié)構(gòu)、C#語言基礎(chǔ)、數(shù)組和集合、面向?qū)ο蟪绦蛟O(shè)計(jì)、繼承和接口設(shè)計(jì)、泛型和反射、枚舉器和迭代器、Windows窗體和控件設(shè)計(jì)、圖形設(shè)計(jì)、文件操作、錯(cuò)誤調(diào)試和異常處理、多線程和異步程序設(shè)計(jì)、ADO.NET數(shù)據(jù)庫訪問技術(shù)、XML應(yīng)用、LINQ和Web應(yīng)用程序設(shè)計(jì)等內(nèi)容。
C#是微軟公司結(jié)合C/C++和Java等語言的特點(diǎn)設(shè)計(jì)的一種新的程序設(shè)計(jì)語言,它基于.NET Framework通用平臺,C#程序開發(fā)人員可以直接使用.NET Framework中完整且豐富的類庫設(shè)計(jì)出跨平臺的軟件系統(tǒng)。C#具有簡單易學(xué)、使用方便、采用可視化設(shè)計(jì)方法開發(fā)復(fù)雜軟件系統(tǒng)的特點(diǎn)。本書以Visual Studio 2012為平臺介紹C#程序的設(shè)計(jì)方法。
1. 本書讀者
本書讀者需具備簡單的編程經(jīng)驗(yàn),并對Windows的基本操作有所了解。本書可以作為大專院校的計(jì)算機(jī)專業(yè)和非計(jì)算機(jī)專業(yè)學(xué)生學(xué)習(xí)C#編程的教材,尤其適合作為高職高專C#應(yīng)用方向的教材,也可供具有Windows初步知識的計(jì)算機(jī)愛好者參閱。
2. 本書內(nèi)容
本書分為18章,第1章為C#語言概述; 第2章為C#程序設(shè)計(jì)基礎(chǔ); 第3章為C#控制語句; 第4章為數(shù)組和集合; 第5章為面向?qū)ο蟪绦蛟O(shè)計(jì); 第6章為繼承和接口設(shè)計(jì); 第7章為泛型和反射; 第8章為枚舉器和迭代器; 第9章為Windows應(yīng)用程序設(shè)計(jì); 第10章為用戶界面設(shè)計(jì); 第11章為圖形設(shè)計(jì); 第12章為文件操作; 第13章為錯(cuò)誤調(diào)試和異常處理; 第14章為多線程和異步程序設(shè)計(jì); 第15章為ADO.NET數(shù)據(jù)庫訪問技術(shù); 第16章為XML及其應(yīng)用; 第17章為LINQ技術(shù); 第18章為Web應(yīng)用程序設(shè)計(jì)。
與第2版相比,本書增加了枚舉器、迭代器、異步程序設(shè)計(jì)和LINQ等內(nèi)容,并結(jié)合C# 2012的特點(diǎn)對相關(guān)知識點(diǎn)進(jìn)行了更新。
書中各章提供了大量的練習(xí)題和上機(jī)實(shí)驗(yàn)題供讀者選用。
3. 本書特色
內(nèi)容全面、知識點(diǎn)翔實(shí): 在內(nèi)容講授上力求翔實(shí)和全面,細(xì)致地解析每個(gè)知識點(diǎn)和各知識點(diǎn)之間的聯(lián)系。
條理清晰、講解透徹: 從介紹C#的基本概念出發(fā),由簡單到復(fù)雜,循序漸進(jìn)地介紹C#面向?qū)ο蟮某绦蛟O(shè)計(jì)方法。
實(shí)例豐富、實(shí)用性強(qiáng): 列舉了大量的應(yīng)用示例,讀者通過上機(jī)模仿可以大大提高使用C#開發(fā)控制臺應(yīng)用程序、Windows窗體應(yīng)用程序和Web應(yīng)用程序的能力。
4. 教學(xué)資源
為了方便教師教學(xué)和學(xué)生學(xué)習(xí),本書提供了全面而豐富的教學(xué)資源,配套的教學(xué)資源包的內(nèi)容如下。
① PPT: 供任課教師在教學(xué)中使用。
② 源程序代碼: 存放在“\C#程序”文件夾中,每章對應(yīng)一個(gè)子文件夾,例如“\C#程序\ch2”文件夾包含第2章的所有例子程序。
③ 練習(xí)題—單項(xiàng)選擇題答案: 存放在“\單項(xiàng)選擇題答案”文件夾中。
④ 練習(xí)題—編程題源程序代碼: 存放在“\C#編程題”文件夾中,每章對應(yīng)一個(gè)子文件夾,例如“\C#編程題\ch2”文件夾包含第2章的所有編程題的程序。
⑤ 練習(xí)題—上機(jī)實(shí)驗(yàn)題源程序代碼: 存放在“\C#實(shí)驗(yàn)”文件夾中,每章對應(yīng)一個(gè)子文件夾,例如“\C#實(shí)驗(yàn)\ch2”文件夾包含第2章的上機(jī)實(shí)驗(yàn)題的程序。
上述所有教學(xué)資源均可從清華大學(xué)出版社網(wǎng)站免費(fèi)下載。歡迎使用本書的教師和讀者與編者聯(lián)系,聯(lián)系郵箱為licb1964@126.com。
5. 致謝
本教材的編寫工作得到武漢大學(xué)教務(wù)部的教改項(xiàng)目的資助,清華大學(xué)出版社給予了大力支持,連續(xù)6屆選課的同學(xué)提出了許多寶貴的建議,編者在此表示衷心感謝!
編者
2015年7月
第1章C#語言概述
1.1什么是C#語言
1.1.1C#語言的發(fā)展歷程
1.1.2C#語言的特點(diǎn)
1.1.3用C#編寫的應(yīng)用程序類型
1.2.NET Framework
1.2.1什么是.NET Framework
1.2.2開發(fā)托管代碼的過程
1.2.3C#語言與.NET Framework
1.3Visual Studio 2012的安裝、啟動和退出
1.3.1Visual Studio 2012的安裝
1.3.2配置Visual C#開發(fā)環(huán)境
1.3.3Visual Studio 2012的啟動
1.3.4Visual Studio 2012的退出
1.4Visual C#集成開發(fā)環(huán)境
1.4.1啟動Visual C#集成開發(fā)環(huán)境
1.4.2Visual C#的菜單欄
1.4.3Visual C#的工具欄
1.4.4解決方案資源管理器
1.4.5編輯器的設(shè)置
1.5一個(gè)簡單的C#程序
1.5.1代碼分析
1.5.2項(xiàng)目的構(gòu)成
1.5.3控制臺應(yīng)用程序中的基本元素
練習(xí)題1
第2章C#程序設(shè)計(jì)基礎(chǔ)
2.1標(biāo)識符
2.2C#中的數(shù)據(jù)類型
2.2.1值類型
2.2.2引用類型
2.3C#中的變量和常量
2.3.1變量
2.3.2值類型變量和引用類型變量的區(qū)別
2.3.3常量
2.4類型的轉(zhuǎn)換
2.4.1隱式轉(zhuǎn)換
2.4.2顯式轉(zhuǎn)換
2.4.3裝箱和拆箱
2.5結(jié)構(gòu)類型和枚舉類型
2.5.1結(jié)構(gòu)類型
2.5.2枚舉類型
2.6C#運(yùn)算符和表達(dá)式
2.6.1算術(shù)運(yùn)算符
2.6.2字符串運(yùn)算符
2.6.3賦值運(yùn)算符
2.6.4關(guān)系運(yùn)算符
2.6.5邏輯運(yùn)算符
2.6.6位運(yùn)算符
2.6.7條件運(yùn)算符
2.6.8其他運(yùn)算符
2.6.9運(yùn)算符的優(yōu)先級
2.7C#中的常用類和結(jié)構(gòu)
2.7.1String類
2.7.2Math類
2.7.3Convert類
2.7.4DateTime結(jié)構(gòu)
練習(xí)題2
第3章C#控制語句
3.1選擇控制語句
3.1.1if語句
3.1.2if…else語句
3.1.3if…else if語句
3.1.4switch語句
3.2循環(huán)控制語句
3.2.1while語句
3.2.2do…while語句
3.2.3for語句
3.3跳轉(zhuǎn)語句
3.3.1break語句
3.3.2continue語句
3.3.3goto語句
練習(xí)題3
第4章數(shù)組和集合
4.1一維數(shù)組
4.1.1一維數(shù)組的定義
4.1.2一維數(shù)組的動態(tài)初始化
4.1.3一維數(shù)組的靜態(tài)初始化
4.1.4訪問一維數(shù)組中的元素
4.1.5一組數(shù)組的越界
4.2二維數(shù)組
4.2.1二維數(shù)組的定義
4.2.2二維數(shù)組的動態(tài)初始化
4.2.3二維數(shù)組的靜態(tài)初始化
4.2.4訪問二維數(shù)組中的元素
4.3交錯(cuò)數(shù)組
4.3.1交錯(cuò)數(shù)組的定義和初始化
4.3.2訪問交錯(cuò)數(shù)組中的元素
4.4Array類
4.4.1Array類的屬性和方法
4.4.2Array類中方法的使用
4.5ArrayList類
4.5.1定義ArrayList類的對象
4.5.2ArrayList類的屬性
4.5.3ArrayList類的方法
4.6List<T>類
4.6.1定義List<T>類的對象
4.6.2List<T>類的屬性
4.6.3List<T>類的方法
練習(xí)題4
第5章面向?qū)ο蟪绦蛟O(shè)計(jì)
5.1面向?qū)ο蟪绦蛟O(shè)計(jì)概述
5.1.1面向?qū)ο蟮幕靖拍?br />
5.1.2面向?qū)ο蟮膬?yōu)點(diǎn)
5.2類
5.2.1類的聲明
5.2.2類的成員
5.2.3分部類
5.2.4類和結(jié)構(gòu)類型的差異
5.3對象
5.3.1定義類的對象
5.3.2訪問對象的字段
5.3.3調(diào)用(或訪問)對象的方法
5.3.4訪問對象成員的限制
5.3.5類對象的內(nèi)存空間分配方式
5.4命名空間
5.4.1命名空間概述
5.4.2使用命名空間
5.5構(gòu)造函數(shù)和析構(gòu)函數(shù)
5.5.1構(gòu)造函數(shù)
5.5.2析構(gòu)函數(shù)
5.6靜態(tài)成員
5.6.1靜態(tài)字段
5.6.2靜態(tài)方法
5.7屬性
5.7.1什么是屬性
5.7.2屬性的聲明及使用
5.7.3自動實(shí)現(xiàn)的屬性
5.8方法
5.8.1方法的定義
5.8.2方法的返回值
5.8.3方法的參數(shù)類型
5.8.4可選參數(shù)
5.8.5this關(guān)鍵字
5.8.6方法的重載
5.8.7運(yùn)算符重載
5.9對象的復(fù)制
5.9.1淺復(fù)制
5.9.2深復(fù)制
5.10嵌套類
5.10.1嵌套類的聲明
5.10.2嵌套類和包含類的關(guān)系
5.11索引器
5.11.1什么是索引器
5.11.2聲明索引器
5.11.3使用其他非整數(shù)的索引類型
5.12委托
5.12.1什么是委托
5.12.2定義和使用委托
5.12.3委托對象封裝多個(gè)方法
5.12.4委托與匿名方法
5.12.5委托和Lambda(λ)表達(dá)式
5.13事件
5.13.1事件處理機(jī)制
5.13.2事件的創(chuàng)建和使用
練習(xí)題5
第6章繼承和接口設(shè)計(jì)
6.1繼承
6.1.1什么是繼承
6.1.2派生類的聲明
6.1.3基類成員的可訪問性
6.1.4按次序調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)
6.1.5使用sealed修飾符禁止繼承
6.2多態(tài)性
6.2.1隱藏基類方法
6.2.2重寫基類方法
6.2.3dynamic類型
6.2.4對象的類型判別和類對象引用的轉(zhuǎn)換
6.3抽象類
6.3.1抽象類的特性
6.3.2抽象方法
6.3.3抽象屬性
6.4接口
6.4.1接口的特性
6.4.2接口的定義
6.4.3接口的成員
6.4.4接口的實(shí)現(xiàn)
6.4.5接口映射
6.4.6接口實(shí)現(xiàn)的繼承
6.4.7重新實(shí)現(xiàn)接口
6.5接口在集合排序中的應(yīng)用
6.5.1ArrayList類的排序方法
6.5.2IComparable接口
6.5.3IComparer接口
練習(xí)題6
第7章泛型和反射
7.1泛型
7.1.1什么是泛型
7.1.2泛型的聲明和使用
7.1.3泛型的MSIL代碼結(jié)構(gòu)
7.1.4類型參數(shù)的約束
7.1.5泛型的繼承
7.1.6泛型接口和委托
7.2反射
7.2.1反射概述
7.2.2反射中常用的類
7.2.3反射的應(yīng)用示例
練習(xí)題7
第8章枚舉器和迭代器
8.1枚舉器
8.1.1枚舉器概述
8.1.2IEnumerator接口
8.1.3IEnumerable接口
8.1.4泛型枚舉接口
8.2迭代器
8.2.1迭代器概述
8.2.2迭代器方法
8.2.3get訪問器
練習(xí)題8
第9章Windows應(yīng)用程序設(shè)計(jì)
9.1窗體設(shè)計(jì)
9.1.1創(chuàng)建Windows窗體應(yīng)用程序的過程
9.1.2窗體的類型
9.1.3窗體的常用屬性
9.1.4窗體的常用事件
9.1.5窗體的常用方法
9.1.6多個(gè)窗體之間的調(diào)用
9.1.7窗體上各事件的引發(fā)順序
9.1.8焦點(diǎn)與Tab鍵次序
9.2常用的控件設(shè)計(jì)
9.2.1控件概述
9.2.2富文本框控件
9.2.3分組框控件
9.2.4面板控件
9.2.5復(fù)選框控件
9.2.6單選按鈕控件
9.2.7圖片框控件
9.2.8組合框控件
9.2.9列表框控件
9.2.10帶復(fù)選框的列表框控件
9.2.11定時(shí)器控件
9.2.12滾動條控件
9.2.13月歷控件
9.2.14日期/時(shí)間控件
9.2.15超鏈接標(biāo)簽控件
9.3多個(gè)窗體之間的數(shù)據(jù)傳遞
9.3.1通過靜態(tài)字段傳遞數(shù)據(jù)
9.3.2通過構(gòu)造函數(shù)傳遞數(shù)據(jù)
9.4多文檔窗體
9.4.1MDI父窗體的屬性、事件和方法
9.4.2MDI子窗體的屬性
9.4.3創(chuàng)建MDI父窗體及其子窗體
9.5窗體設(shè)計(jì)的事件機(jī)制
9.5.1窗體事件的處理原理
9.5.2在Windows窗體中創(chuàng)建事件過程
9.5.3在執(zhí)行時(shí)為Windows窗體創(chuàng)建事件過程
9.5.4將多個(gè)事件連接到Windows窗體中的單個(gè)事件過程
練習(xí)題9
第10章用戶界面設(shè)計(jì)
10.1菜單設(shè)計(jì)
10.1.1菜單的基本結(jié)構(gòu)
10.1.2創(chuàng)建下拉式菜單
10.1.3設(shè)計(jì)彈出式菜單
10.2通用對話框
10.2.1打開文件對話框
10.2.2保存文件對話框
10.2.3顏色對話框
10.2.4字體對話框
10.3圖像列表框控件
10.3.1建立ImageList控件
10.3.2ImageList控件的屬性
10.3.3Images集合的屬性和方法
10.4樹形視圖控件
10.4.1TreetView控件概述
10.4.2建立TreeView控件
10.4.3TreeView控件的屬性
10.4.4TreeView控件的事件和方法
10.4.5Nodes集合和TreeNode對象
10.4.6執(zhí)行時(shí)TreeView控件的基本操作
10.5列表視圖控件
10.5.1ListView控件概述
10.5.2建立ListView控件
10.5.3ListView控件的屬性
10.5.4ListView控件的事件和方法
10.5.5Items集合和ListViewItem對象
10.5.6Columns集合和ColumnHeader對象
10.5.7執(zhí)行時(shí)ListView控件的基本操作
10.6工具欄控件
10.6.1建立ToolStrip控件
10.6.2ToolStrip控件的屬性
10.6.3Items集合和ToolStripButton對象
10.7狀態(tài)欄控件
10.7.1建立StatusStrip控件
10.7.2StautsStrip控件的屬性
練習(xí)題10
第11章圖形設(shè)計(jì)
11.1繪圖概述
11.1.1繪圖的基本知識
11.1.2什么是GDI+
11.1.3Graphics類
11.2繪圖的基本步驟
11.3繪制圖形
11.3.1繪制直線
11.3.2繪制矩形
11.3.3繪制多邊形
11.3.4繪制圓和橢圓
11.3.5繪制弧線
11.3.6繪制餅形
11.3.7繪制非閉合曲線
11.3.8繪制閉合曲線
11.3.9繪制貝濟(jì)埃曲線
11.4創(chuàng)建畫圖工具
11.4.1創(chuàng)建畫筆
11.4.2創(chuàng)建筆刷
11.4.3創(chuàng)建字體
11.5繪制文本
練習(xí)題11
第12章文件操作
12.1文件和System.IO模型概述
12.1.1文件的類型
12.1.2文件的屬性
12.1.3文件的訪問方式
12.2System.IO模型
12.2.1什么是System.IO模型
12.2.2文件編碼
12.2.3C#的文件流
12.3文件夾和文件的操作
12.3.1文件夾的操作
12.3.2文件的操作
12.4FileStream類
12.5文本文件的操作
12.5.1StreamReader類
12.5.2StreamWriter類
12.6二進(jìn)制文件的操作
12.6.1BinaryWriter類
12.6.2BinaryReader類
12.6.3二進(jìn)制文件的隨機(jī)查找
12.7序列化和反序列化
12.7.1序列化
12.7.2反序列化
練習(xí)題12
第13章錯(cuò)誤調(diào)試和異常處理
13.1錯(cuò)誤的分類
13.2程序調(diào)試
13.2.1調(diào)試工具
13.2.2設(shè)置斷點(diǎn)
13.2.3調(diào)試過程
13.3異常處理
13.3.1異常概述
13.3.2異常處理語句
13.3.3常用的異常類
練習(xí)題13
第14章多線程和異步程序設(shè)計(jì)
14.1多線程程序設(shè)計(jì)
14.1.1多線程概述
14.1.2線程命名空間
14.1.3Thread類及其應(yīng)用
14.1.4線程優(yōu)先級和線程調(diào)度
14.1.5線程互斥
14.1.6線程同步
14.1.7volatile關(guān)鍵字
14.1.8線程池
14.2異步程序設(shè)計(jì)
14.2.1異步的概念
14.2.2同步和異步的差別
14.2.3TAP異步模式編程
練習(xí)題14
第15章ADO.NET數(shù)據(jù)庫訪問技術(shù)
15.1數(shù)據(jù)庫概述
15.1.1關(guān)系數(shù)據(jù)庫的基本結(jié)構(gòu)
15.1.2結(jié)構(gòu)化查詢語言
15.2ADO.NET模型
15.2.1ADO.NET簡介
15.2.2ADO.NET體系結(jié)構(gòu)
15.2.3ADO.NET數(shù)據(jù)庫的訪問流程
15.3ADO.NET的數(shù)據(jù)訪問對象
15.3.1OleDbConnection對象
15.3.2OleDbCommand對象
15.3.3OleDbDataReader對象
15.3.4OleDbDataAdapter對象
15.4DataSet對象
15.4.1DataSet對象概述
15.4.2Dataset對象的屬性和方法
15.4.3Tables集合屬性和DataTable對象
15.4.4Columns集合屬性和DataColumn對象
15.4.5Rows集合屬性和DataRow對象
15.5數(shù)據(jù)綁定
15.5.1數(shù)據(jù)綁定概述
15.5.2BindingNavigator控件
15.6DataView對象
15.6.1DataView對象概述
15.6.2DataView對象的列排序設(shè)置
15.6.3DataView對象的過濾條件設(shè)置
15.7DataGridView控件
15.7.1創(chuàng)建DataGridView對象
15.7.2DataGridView的屬性、方法和事件
15.7.3DataGridView與DataView對象結(jié)合
15.7.4通過DataGridView對象更新數(shù)據(jù)源
練習(xí)題15
第16章XML及其應(yīng)用
16.1XML概述
16.2XML語法規(guī)則
16.2.1XML文檔中的有關(guān)術(shù)語
16.2.2XML文檔的結(jié)構(gòu)
16.2.3XML文檔的語法規(guī)定
16.3XPath表達(dá)式
16.3.1路徑匹配
16.3.2謂詞
16.3.3屬性匹配
16.3.4通配符
16.3.5XPath軸
16.4用.NET Framework類操作XML文檔
16.4.1XML文檔操作類
16.4.2XML文檔的結(jié)點(diǎn)操作
16.5DataSet和XML文檔的相互轉(zhuǎn)換
16.5.1將XML文檔轉(zhuǎn)換成DataSet數(shù)據(jù)
16.5.2將DataSet數(shù)據(jù)轉(zhuǎn)換成XML文件
練習(xí)題16
第17章LINQ技術(shù)
17.1LINQ概述
17.1.1什么是LINQ
17.1.2LINQ提供程序
17.2使用LINQ to Objects
17.2.1LINQ的基本操作
17.2.2LINQ查詢子句
17.2.3方法查詢
練習(xí)題17
第18章Web應(yīng)用程序設(shè)計(jì)
18.1ASP.NET概述
18.1.1ASP.NET的發(fā)展歷程
18.1.2ASP.NET網(wǎng)頁的組成
18.1.3ASP.NET網(wǎng)頁的執(zhí)行方式
18.1.4ASP.NET網(wǎng)頁的代碼編寫模型
18.2創(chuàng)建一個(gè)簡單的Web應(yīng)用程序
18.3基本ASP.NET服務(wù)器控件
18.3.1服務(wù)器控件概述
18.3.2Label、Button和TextBox控件
18.3.3DropDownList控件
18.3.4CheckBox、CheckBoxList、RadioButton和
RadioButtonList控件
18.3.5數(shù)據(jù)驗(yàn)證控件
18.3.6鏈接控件
18.4高級ASP.NET服務(wù)器端控件
18.4.1SqlDataSource控件
18.4.2GridView控件
18.4.3DetailsView控件
練習(xí)題18
參考文獻(xiàn)