本書以Visual Studio 2012為平臺介紹C#程序設計方法,包括.NET Framework體系結(jié)構、C#語言基礎、數(shù)組和集合、面向?qū)ο蟪绦蛟O計、繼承和接口設計、泛型和反射、枚舉器和迭代器、Windows窗體和控件設計、圖形設計、文件操作、錯誤調(diào)試和異常處理、多線程和異步程序設計、ADO.NET數(shù)據(jù)庫訪問技術、XML應用、LINQ和Web應用程序設計等內(nèi)容。
C#是微軟公司結(jié)合C/C++和Java等語言的特點設計的一種新的程序設計語言,它基于.NET Framework通用平臺,C#程序開發(fā)人員可以直接使用.NET Framework中完整且豐富的類庫設計出跨平臺的軟件系統(tǒng)。C#具有簡單易學、使用方便、采用可視化設計方法開發(fā)復雜軟件系統(tǒng)的特點。本書以Visual Studio 2012為平臺介紹C#程序的設計方法。
1. 本書讀者
本書讀者需具備簡單的編程經(jīng)驗,并對Windows的基本操作有所了解。本書可以作為大專院校的計算機專業(yè)和非計算機專業(yè)學生學習C#編程的教材,尤其適合作為高職高專C#應用方向的教材,也可供具有Windows初步知識的計算機愛好者參閱。
2. 本書內(nèi)容
本書分為18章,第1章為C#語言概述; 第2章為C#程序設計基礎; 第3章為C#控制語句; 第4章為數(shù)組和集合; 第5章為面向?qū)ο蟪绦蛟O計; 第6章為繼承和接口設計; 第7章為泛型和反射; 第8章為枚舉器和迭代器; 第9章為Windows應用程序設計; 第10章為用戶界面設計; 第11章為圖形設計; 第12章為文件操作; 第13章為錯誤調(diào)試和異常處理; 第14章為多線程和異步程序設計; 第15章為ADO.NET數(shù)據(jù)庫訪問技術; 第16章為XML及其應用; 第17章為LINQ技術; 第18章為Web應用程序設計。
與第2版相比,本書增加了枚舉器、迭代器、異步程序設計和LINQ等內(nèi)容,并結(jié)合C# 2012的特點對相關知識點進行了更新。
書中各章提供了大量的練習題和上機實驗題供讀者選用。
3. 本書特色
內(nèi)容全面、知識點翔實: 在內(nèi)容講授上力求翔實和全面,細致地解析每個知識點和各知識點之間的聯(lián)系。
條理清晰、講解透徹: 從介紹C#的基本概念出發(fā),由簡單到復雜,循序漸進地介紹C#面向?qū)ο蟮某绦蛟O計方法。
實例豐富、實用性強: 列舉了大量的應用示例,讀者通過上機模仿可以大大提高使用C#開發(fā)控制臺應用程序、Windows窗體應用程序和Web應用程序的能力。
4. 教學資源
為了方便教師教學和學生學習,本書提供了全面而豐富的教學資源,配套的教學資源包的內(nèi)容如下。
① PPT: 供任課教師在教學中使用。
② 源程序代碼: 存放在“\C#程序”文件夾中,每章對應一個子文件夾,例如“\C#程序\ch2”文件夾包含第2章的所有例子程序。
③ 練習題—單項選擇題答案: 存放在“\單項選擇題答案”文件夾中。
④ 練習題—編程題源程序代碼: 存放在“\C#編程題”文件夾中,每章對應一個子文件夾,例如“\C#編程題\ch2”文件夾包含第2章的所有編程題的程序。
⑤ 練習題—上機實驗題源程序代碼: 存放在“\C#實驗”文件夾中,每章對應一個子文件夾,例如“\C#實驗\ch2”文件夾包含第2章的上機實驗題的程序。
上述所有教學資源均可從清華大學出版社網(wǎng)站免費下載。歡迎使用本書的教師和讀者與編者聯(lián)系,聯(lián)系郵箱為licb1964@126.com。
5. 致謝
本教材的編寫工作得到武漢大學教務部的教改項目的資助,清華大學出版社給予了大力支持,連續(xù)6屆選課的同學提出了許多寶貴的建議,編者在此表示衷心感謝!
編者
2015年7月
第1章C#語言概述
1.1什么是C#語言
1.1.1C#語言的發(fā)展歷程
1.1.2C#語言的特點
1.1.3用C#編寫的應用程序類型
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編輯器的設置
1.5一個簡單的C#程序
1.5.1代碼分析
1.5.2項目的構成
1.5.3控制臺應用程序中的基本元素
練習題1
第2章C#程序設計基礎
2.1標識符
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é)構類型和枚舉類型
2.5.1結(jié)構類型
2.5.2枚舉類型
2.6C#運算符和表達式
2.6.1算術運算符
2.6.2字符串運算符
2.6.3賦值運算符
2.6.4關系運算符
2.6.5邏輯運算符
2.6.6位運算符
2.6.7條件運算符
2.6.8其他運算符
2.6.9運算符的優(yōu)先級
2.7C#中的常用類和結(jié)構
2.7.1String類
2.7.2Math類
2.7.3Convert類
2.7.4DateTime結(jié)構
練習題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語句
練習題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交錯數(shù)組
4.3.1交錯數(shù)組的定義和初始化
4.3.2訪問交錯數(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>類的方法
練習題4
第5章面向?qū)ο蟪绦蛟O計
5.1面向?qū)ο蟪绦蛟O計概述
5.1.1面向?qū)ο蟮幕靖拍?br />
5.1.2面向?qū)ο蟮膬?yōu)點
5.2類
5.2.1類的聲明
5.2.2類的成員
5.2.3分部類
5.2.4類和結(jié)構類型的差異
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構造函數(shù)和析構函數(shù)
5.5.1構造函數(shù)
5.5.2析構函數(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自動實現(xiàn)的屬性
5.8方法
5.8.1方法的定義
5.8.2方法的返回值
5.8.3方法的參數(shù)類型
5.8.4可選參數(shù)
5.8.5this關鍵字
5.8.6方法的重載
5.8.7運算符重載
5.9對象的復制
5.9.1淺復制
5.9.2深復制
5.10嵌套類
5.10.1嵌套類的聲明
5.10.2嵌套類和包含類的關系
5.11索引器
5.11.1什么是索引器
5.11.2聲明索引器
5.11.3使用其他非整數(shù)的索引類型
5.12委托
5.12.1什么是委托
5.12.2定義和使用委托
5.12.3委托對象封裝多個方法
5.12.4委托與匿名方法
5.12.5委托和Lambda(λ)表達式
5.13事件
5.13.1事件處理機制
5.13.2事件的創(chuàng)建和使用
練習題5
第6章繼承和接口設計
6.1繼承
6.1.1什么是繼承
6.1.2派生類的聲明
6.1.3基類成員的可訪問性
6.1.4按次序調(diào)用構造函數(shù)和析構函數(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接口的實現(xiàn)
6.4.5接口映射
6.4.6接口實現(xiàn)的繼承
6.4.7重新實現(xiàn)接口
6.5接口在集合排序中的應用
6.5.1ArrayList類的排序方法
6.5.2IComparable接口
6.5.3IComparer接口
練習題6
第7章泛型和反射
7.1泛型
7.1.1什么是泛型
7.1.2泛型的聲明和使用
7.1.3泛型的MSIL代碼結(jié)構
7.1.4類型參數(shù)的約束
7.1.5泛型的繼承
7.1.6泛型接口和委托
7.2反射
7.2.1反射概述
7.2.2反射中常用的類
7.2.3反射的應用示例
練習題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訪問器
練習題8
第9章Windows應用程序設計
9.1窗體設計
9.1.1創(chuàng)建Windows窗體應用程序的過程
9.1.2窗體的類型
9.1.3窗體的常用屬性
9.1.4窗體的常用事件
9.1.5窗體的常用方法
9.1.6多個窗體之間的調(diào)用
9.1.7窗體上各事件的引發(fā)順序
9.1.8焦點與Tab鍵次序
9.2常用的控件設計
9.2.1控件概述
9.2.2富文本框控件
9.2.3分組框控件
9.2.4面板控件
9.2.5復選框控件
9.2.6單選按鈕控件
9.2.7圖片框控件
9.2.8組合框控件
9.2.9列表框控件
9.2.10帶復選框的列表框控件
9.2.11定時器控件
9.2.12滾動條控件
9.2.13月歷控件
9.2.14日期/時間控件
9.2.15超鏈接標簽控件
9.3多個窗體之間的數(shù)據(jù)傳遞
9.3.1通過靜態(tài)字段傳遞數(shù)據(jù)
9.3.2通過構造函數(shù)傳遞數(shù)據(jù)
9.4多文檔窗體
9.4.1MDI父窗體的屬性、事件和方法
9.4.2MDI子窗體的屬性
9.4.3創(chuàng)建MDI父窗體及其子窗體
9.5窗體設計的事件機制
9.5.1窗體事件的處理原理
9.5.2在Windows窗體中創(chuàng)建事件過程
9.5.3在執(zhí)行時為Windows窗體創(chuàng)建事件過程
9.5.4將多個事件連接到Windows窗體中的單個事件過程
練習題9
第10章用戶界面設計
10.1菜單設計
10.1.1菜單的基本結(jié)構
10.1.2創(chuàng)建下拉式菜單
10.1.3設計彈出式菜單
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í)行時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í)行時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控件的屬性
練習題10
第11章圖形設計
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繪制貝濟埃曲線
11.4創(chuàng)建畫圖工具
11.4.1創(chuàng)建畫筆
11.4.2創(chuàng)建筆刷
11.4.3創(chuàng)建字體
11.5繪制文本
練習題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二進制文件的操作
12.6.1BinaryWriter類
12.6.2BinaryReader類
12.6.3二進制文件的隨機查找
12.7序列化和反序列化
12.7.1序列化
12.7.2反序列化
練習題12
第13章錯誤調(diào)試和異常處理
13.1錯誤的分類
13.2程序調(diào)試
13.2.1調(diào)試工具
13.2.2設置斷點
13.2.3調(diào)試過程
13.3異常處理
13.3.1異常概述
13.3.2異常處理語句
13.3.3常用的異常類
練習題13
第14章多線程和異步程序設計
14.1多線程程序設計
14.1.1多線程概述
14.1.2線程命名空間
14.1.3Thread類及其應用
14.1.4線程優(yōu)先級和線程調(diào)度
14.1.5線程互斥
14.1.6線程同步
14.1.7volatile關鍵字
14.1.8線程池
14.2異步程序設計
14.2.1異步的概念
14.2.2同步和異步的差別
14.2.3TAP異步模式編程
練習題14
第15章ADO.NET數(shù)據(jù)庫訪問技術
15.1數(shù)據(jù)庫概述
15.1.1關系數(shù)據(jù)庫的基本結(jié)構
15.1.2結(jié)構化查詢語言
15.2ADO.NET模型
15.2.1ADO.NET簡介
15.2.2ADO.NET體系結(jié)構
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對象的列排序設置
15.6.3DataView對象的過濾條件設置
15.7DataGridView控件
15.7.1創(chuàng)建DataGridView對象
15.7.2DataGridView的屬性、方法和事件
15.7.3DataGridView與DataView對象結(jié)合
15.7.4通過DataGridView對象更新數(shù)據(jù)源
練習題15
第16章XML及其應用
16.1XML概述
16.2XML語法規(guī)則
16.2.1XML文檔中的有關術語
16.2.2XML文檔的結(jié)構
16.2.3XML文檔的語法規(guī)定
16.3XPath表達式
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é)點操作
16.5DataSet和XML文檔的相互轉(zhuǎn)換
16.5.1將XML文檔轉(zhuǎn)換成DataSet數(shù)據(jù)
16.5.2將DataSet數(shù)據(jù)轉(zhuǎn)換成XML文件
練習題16
第17章LINQ技術
17.1LINQ概述
17.1.1什么是LINQ
17.1.2LINQ提供程序
17.2使用LINQ to Objects
17.2.1LINQ的基本操作
17.2.2LINQ查詢子句
17.2.3方法查詢
練習題17
第18章Web應用程序設計
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)建一個簡單的Web應用程序
18.3基本ASP.NET服務器控件
18.3.1服務器控件概述
18.3.2Label、Button和TextBox控件
18.3.3DropDownList控件
18.3.4CheckBox、CheckBoxList、RadioButton和
RadioButtonList控件
18.3.5數(shù)據(jù)驗證控件
18.3.6鏈接控件
18.4高級ASP.NET服務器端控件
18.4.1SqlDataSource控件
18.4.2GridView控件
18.4.3DetailsView控件
練習題18
參考文獻