本書全面介紹C#編程知識, 主要內容包括: C#的開發環境和基本語法、流程控件語句和常用數組、關于類、枚舉、結構和接口的使用、如何處理字符串和日期時間、如何使用集合和泛型、如何使用正則表達式操作數據、如何使用窗體控件構建MDI應用程序和窗體應用程序以及文件和目錄管理、對話框管理、使用ADO.NET技術訪問數據庫等等。本書最后還向讀者提供了完整的開發項目, 加深讀者對C#的理解。
知識點全
本書緊密圍繞C#語言展開講解,具有很強的邏輯性和系統性。
實例豐富
書中各實例均經過作者精心設計和挑選,它們都是根據作者在實際開發中的經驗總結而來的,涵蓋了在實際開發中所遇到的各種問題。
應用廣泛
對于精選案例,給出了詳細步驟,結構清晰簡明,分析深入淺出,而且有些程序能夠直接在項目中使用,避免讀者進行重復開發。
基于理論,注重實踐
在講述過程中,不只是介紹理論知識,而且在合適位置安排綜合應用實例,或者小型應用程序,將理論知識應用到實踐中,來加強讀者的實際應用能力,鞏固所學的相關知識。
C# 是面向對象的編程語言,是微軟公司發布的一種面向對象的、運行于.NET Framework之上的高級程序設計語言。全球每天有超過百萬的開發者正在用C# 進行著各式各樣程序的開發,它是目前使用最廣泛的計算機語言之一。C# 憑借其易學易用、功能強大等特點,可以進行Windows 窗體應用程序、MDI 窗體應用程序、WPF 應用程序、.NET 應用程序等的開發,并且在信息技術、科學研究等各個領域都得到了廣泛的應用。
為了使廣大學生和工作人員能真正掌握C# 語言程序設計技術,領悟C# 程序設計的快樂和享受C# 語言帶來的在提高生產效率方面的好處,作者根據多年的程序開發和C# 授課經驗,精心編寫了本書。本書并不是單純從知識角度來講解C# 程序設計,而是從實踐和解決開發問題的角度來介紹C# 語言,在編寫的過程中,注重把C# 語言中的重點、難點、要點和編程中常見的問題融合在一起進行講解。
本書編寫思路清晰、內容翔實、案例實用,詳細介紹使用C# 語言進行程序設計的方方面面。
本書可作為計算機軟件以及其他計算機相關專業的教材,也可以作為C# 編程人員的參考書。
本書內容
全書共分19 章,主要內容如下。
第1 章 C# 入門概述。主要介紹C# 語言的基礎知識,包括C# 的概念、發展歷史、優勢、開發環境、開發工具以及C# 程序結構等內容。
第2 章 C# 基礎語法。主要介紹C# 的基礎語法, 包括C# 常用關鍵字(using、namespace、class)、預處理指令、語言注釋、Main() 方法等相關內容。
第3 章 變量、常量與數據類型。從C# 中的變量開始介紹,然后介紹常量和數據類型的有關知識,最后介紹數據類型轉換的兩種方式,即顯式轉換和隱式轉換。
第4 章 運算符和表達式。主要介紹C# 中常用的運算符和表達式,內容包括C# 的基礎運算符、高級運算符、運算符的優先級別以及表達式等。
第5 章 流程控制語句。首先介紹C# 中的語句類型和空語句,重點介紹C# 條件語句和循環語句的使用,包括if、switch、for、while、do while 和foreach 等。最后還將介紹C# 中的跳轉語句,如return、break、continue 以及goto。
第6 章 字符串與正則表達式。主要介紹C# 中的字符串處理與正則表達式的使用,包括String 類操作字符串、StringBuilder 類操作字符串和正則表達式操作字符串等內容。
第7 章 數值處理和日期處理。主要介紹Math 類、Random 類、DateTime 結構和TimeSpan 結構等內容。
第8 章 數組。將詳細介紹C# 中一維數組、二維數組和多維數組的創建、初始化和相關處理類如何處理數組,例如添加數組元素、移除數組元素、反轉數組元素以及數組排序等內容。
第9 章 內置集合和自定義集合。主要介紹C# 中的內置集合類,以及如何自定義集合類。內置集合類包含Hashtable、SortedList、Stack、Queue 和BitArray 等。
第10 章 類和對象。從面向對象編程的概念引出類和對象的概念,詳細介紹類和對象的有關知識。主要內容包含類的創建和使用、類的構造函數、析構函數、類可包含的成員、對象的創建和使用、this 關鍵字如何使用等。
第11 章 類的面向對象編程。封裝、繼承、多態是面向對象編程的三個特性,也是類的三大特性。該章除了介紹類的編程特性外,還針對抽象類、密封類、類的常用關鍵字進行介紹。
第12 章 枚舉、結構和接口。介紹C# 中經常用到的3 個知識點,即枚舉、結構和接口,包括它們的概念、定義、使用以及與類的區別等知識點。
第13 章 C# 語言高級編程。主要介紹開發程序時一些常用的異常及如何有效地使用異常處理機制。另外,還將會針對程序開發中常見的泛型、委托和事件進行介紹。
第14 章 Windows 窗體基礎控件。從Windows 窗體應用程序開始介紹,詳細介紹窗體程序中常用的窗體控件,例如文本標簽控件、文本輸入框控件、按鈕控件、列表控件、選擇控件、日期和時間控件等。
第15 章 構建MDI 窗體應用程序。詳細介紹如何構建MDI 窗體應用程序,包括程序創建、窗體對話框以及常用的MDI 窗體控件等多項內容。
第16 章 ADO.NET 技術訪問數據庫。詳細介紹ADO.NET 技術常用的數據庫訪問對象,例如SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter 以及DataSet 對象等。
第17 章 Windows 表格數據控件。針對DataGridView 控件和TreeView 控件進行詳細介紹。主要內容包括控件的優點、常用屬性、方法、事件以及實際開發中需要用到的操作等。
第18 章 數據流和文件的輸入/ 輸出。首先介紹數據流,接著介紹System.IO 命名空間,然后介紹如何針對文件和文件夾進行操作。
第19 章 三層架構實現汽車租賃系統。利用Visual Studio 2015 開發工具和SQL Server 2012 數據庫開發基于三層架構的簡單汽車租賃系統。汽車租賃系統包含用戶登錄、用戶注冊、發布汽車出租信息、完成汽車租賃、還車、取消發布信息、信息打印以及退出系統等多個功能模塊。
本書特色
本書中的大量內容來自真實的程序范例,使讀者更容易掌握C# 程序的設計和開發。本書難度適中,內容由淺入深,實用性強,覆蓋面廣,條理清晰。
知識點全
本書緊密圍繞C# 語言展開講解,具有很強的邏輯性和系統性。
實例豐富
書中各實例均經過作者精心設計和挑選,它們都是根據作者在實際開發中的經驗總結而來的,涵蓋了在實際開發中所遇到的各種問題。
應用廣泛
對于精選案例,給出了詳細步驟,結構清晰簡明,分析深入淺出,而且有些程序能夠直接在項目中使用,避免讀者進行二次開發。
基于理論,注重實踐
在講述過程中,不單純介紹理論知識,而且在合適位置安排有綜合應用實例或者小型應用程序,將理論應用到實踐當中,以加強讀者的實際應用能力,鞏固開發基礎知識。
貼心的提示
為了便于讀者閱讀,書中還穿插了一些技巧、提示等小貼士,體例約定如下。
提示:通常是一些貼心的提醒,讓讀者加深印象,或提供建議及解決問題的方法。
注意:提出學習過程中需要特別注意的一些知識點和內容,或者相關信息。
技巧:通過簡短的文字,指出知識點在應用時的一些小竅門。
讀者對象
本書適合作為軟件開發入門者的自學用書,也適合作為高等院校相關專業的教學參考書,還可供開發人員查閱、參考。本書尤其適合下列人員使用:
? C# 語言的初學者以及在校學生。
? 各大中專院校的在校學生和相關授課老師。
? 準備從事與C# 語言或ASP.NET 技術相關工作的人員。
本書由李鑫、祝惠娟編著,參與本書編寫及設計工作的還有鄭志榮、侯艷書、劉利利、侯政洪、肖進、李海燕、侯政云、祝紅濤、崔再喜、賀春雷等,在此表示感謝。在本書的編寫過程中,我們力求精益求精,但難免存在一些不足之處,敬請廣大讀者批評指正。
編 者
李鑫,具有多年.Net項目開發經驗,深入掌握.NET框架技術,熟練開發Asp.net與WinForm項目,精通C#、ASP 、C++、VB語言,熟練使用MTS、COM+、Web Service分布式架構。
祝惠娟,3年的開發經驗。曾任某軟件公司的高級開發工程師,參與軟件后臺服務等項目的設計與開發。對C、C++、VB.NET、SQL Server、C#、XML等多種環境開發和運用,有深刻的理解。
第1 章 C# 入門概述
1.1 C# 語言概述 . 2
1.1.1 什么是C# 語言 ... 2
1.1.2 C# 的發展歷史 .... 2
1.1.3 C# 的優勢分析 .... 2
1.1.4 如何學好C# 語言 .... 3
1.2 C# 環境——.NET 框架 ... 4
1.2.1 什么是.NET 框架 .... 4
1.2.2 .NET 框架的組件 4
1.2.3 .NET 框架的版本 5
1.2.4 .NET 框架的體系結構 .. 6
1.3 C# 開發——Visual Studio 2015 7
1.3.1 什么是Visual Studio 7
1.3.2 Visual Studio 的發展歷程 .. 8
1.3.3 Visual Studio 2015 的新功能 .. 8
1.4 高手帶你做——安裝VS 2015 .... 10
1.5 高手帶你做——創建第一個
控制臺程序 14
1.6 認識C# 程序結構 16
1.6.1 C# 程序結構組成 ... 16
1.6.2 創建和執行C# 程序 ... 17
1.7 高手帶你做——通過記事本創建
應用程序 .... 17
1.8 高手帶你做——創建Windows
窗體應用程序 . 19
1.9 成長任務 .... 21
第2 章 C# 基礎語法
2.1 認識C# 語法 ... 24
2.2 using 關鍵字 .... 25
2.2.1 using 指令 25
2.2.2 常見的命名空間 .... 26
2.2.3 using 語句 27
2.2.4 高手帶你做——using 語句的
詳細使用 .. 28
2.3 namespace 關鍵字 29
2.3.1 定義命名空間 ... 30
2.3.2 嵌套命名空間 ... 30
2.3.3 高手帶你做——為自定義命名
空間指定別名 .... 31
2.4 class 關鍵字 32
2.5 Main() 方法 32
2.6 Console 類 .. 33
2.6.1 輸出內容到控制臺 33
2.6.2 從控制臺輸入內容 34
2.6.3 Console 類的其他方法 .... 34
2.7 C# 語言注釋 .... 35
2.7.1 單行注釋 . 35
2.7.2 多行注釋 . 36
2.7.3 文檔注釋 . 36
2.8 C# 關鍵字 ... 37
2.8.1 保留關鍵字 .. 37
2.8.2 上下文關鍵字 ... 38
2.9 C# 預處理器指令 . 38
2.9.1 C# 預處理器指令列表 38
2.9.2 #define 指令 .. 39
2.9.3 條件指令 . 40
2.9.4 #region 指令 . 41
2.10 高手帶你做——根據輸入內容
返回結果 ... 42
2.11 成長任務... 44
第3 章 變量、常量與數據類型
3.1 變量 .. 46
3.1.1 聲明變量 . 46
3.1.2 變量賦值 . 47
3.1.3 變量類型 . 47
3.2 常量 .. 50
3.2.1 常量概述 . 50
3.2.2 定義常量 . 51
3.3. 數據類型 ... 53
3.3.1 數據類型分類 ... 53
3.3.2 基本數據類型 ... 54
3.3.3 枚舉和結構類型 .... 57
3.4 數據類型轉換 . 57
3.4.1 隱式轉換 . 58
3.4.2 顯式轉換 . 60
3.5 高手帶你做——Convert 類實現
類型轉換 .... 62
3.6 成長任務 .... 64
第4 章 運算符和表達式
4.1 基礎運算符 66
4.1.1 算術運算符 .. 66
4.1.2 關系運算符 .. 67
4.1.3 邏輯運算符 .. 68
4.1.4 賦值運算符 .. 69
4.1.5 位運算符 . 71
4.2 高級運算符 73
4.2.1 自增運算符 .. 74
4.2.2 自減運算符 .. 74
4.2.3 雜項運算符 .. 76
4.3 高手帶你做——認識并使用
三元運算符 77
4.4 運算符的優先級 .. 77
4.5 表達式 ... 79
4.6 成長任務 .... 80
第5 章 流程控制語句
5.1 語句概述 .... 82
5.1.1 語句類型 . 82
5.1.2 空語句 83
5.2 if 選擇語句 . 83
5.2.1 簡單if 語句 .. 83
5.2.2 if else 語句 .. 85
5.2.3 if else if else 語句 .. 86
5.2.4 嵌套if 語句 .. 87
5.3 高手帶你做——根據輸入的年齡
判斷信息 .... 89
5.4 switch 選擇語句 ... 90
5.4.1 switch 語句 ... 90
5.4.2 嵌套switch 語句 .... 92
5.4.3 switch 語句與if 語句的區別 .... 94
5.5 循環語句 .... 95
5.5.1 while 語句 .... 95
5.5.2 do while 語句 .... 97
5.5.3 for 語句 .... 99
5.5.4 foreach 語句 .... 102
5.6 高手帶你做——循環打印點陣圖形.... 104
5.7 跳轉語句 .. 106
5.7.1 return 語句 .. 106
5.7.2 break 語句 .. 107
5.7.3 continue 語句 ... 108
5.7.4 goto 語句 .... 109
5.8 成長任務 .. 111
第6 章 字符串與正則表達式
6.1 認識String 類 114
6.1.1 創建String 對象 ... 114
6.1.2 null 字符串和空字符串 . 115
6.1.3 String 類的屬性 .... 116
6.2 字符串的基本操作 . 116
6.2.1 連接字符串 116
6.2.2 轉換大小寫 119
6.2.3 去除空格 .... 120
6.2.4 提取字符串 120
6.2.5 分割字符串 121
6.3 字符串的高級操作 . 122
6.3.1 替換字符串 122
6.3.2 比較字符串 123
6.3.3 定位字符串 124
6.3.4 格式化字符串 . 126
6.4 高手帶你做——驗證指定的
文件和郵箱 ... 126
6.5 StringBuilder 類操作字符串 .. 128
6.5.1 創建StringBuilder 對象 . 128
6.5.2 StringBuilder 類的屬性 .. 128
6.5.3 追加字符串 130
6.5.4 插入字符串 131
6.5.5 替換字符串 132
6.5.6 刪除字符串 132
6.6 高手帶你做——字符串加密和
解密操作 .. 133
6.7 正則表達式 ... 136
6.7.1 正則元字符 136
6.7.2 正則限定符 137
6.7.3 正則表達式Regex 類 .... 138
6.7.4 高手帶你做——將人民幣
金額轉換為大寫漢字 142
6.8 成長任務 .. 143
第7 章 數值處理和日期處理
7.1 數值處理——Math 類 . 146
7.1.1 靜態常量 .... 146
7.1.2 求最值 ... 146
7.1.3 求絕對值 .... 146
7.1.4 求整數值 .... 147
7.1.5 求三角函數 148
7.1.6 Math 的其他方法 . 149
7.2 偽隨機數——Random 類 . 149
7.2.1 初始化隨機數生成器 .... 149
7.2.2 生成隨機數 150
7.2.3 高手帶你做——求隨機數的
平均值和方差 .. 151
7.3 日期處理——DateTime 結構 153
7.3.1 靜態字段 .... 153
7.3.2 靜態屬性 .... 153
7.3.3 實例屬性 .... 154
7.3.4 靜態方法 .... 155
7.3.5 實例方法 .... 156
7.3.6 ToString() 方法格式化日期 159
7.4 日期處理——TimeSpan 結構 .... 160
7.4.1 靜態字段 .... 160
7.4.2 靜態常量 .... 161
7.4.3 實例屬性 .... 162
7.4.4 實例方法 .... 163
7.4.5 高手帶你做——基于TimeSpan
實現倒計時效果 ... 165
7.5 高手帶你做——根據年月輸出日歷.... 166
7.6 成長任務 .. 167
第8 章 數組
8.1 數組概述 .. 170
8.2 一維數組 .. 170
8.2.1 聲明數組 .... 170
8.2.2 分配空間 .... 171
8.2.3 初始化數組 171
8.2.4 獲取單個元素 . 172
8.2.5 獲取全部元素 . 173
8.3 二維數組 .. 174
8.3.1 聲明數組 .... 174
8.3.2 初始化數組 175
8.3.3 獲取單個元素 . 175
8.3.4 獲取全部元素 . 176
8.4 高手帶你做——二維數組如何
實現矩陣乘法 .... 177
8.5 多維數組 .. 179
8.5.1 三維數組 .... 179
8.5.2 交錯數組 .... 180
8.6 數組處理類 ... 181
8.6.1 Array 類 . 182
8.6.2 ArrayList 類 183
8.7 數組的基礎操作 185
8.7.1 添加元素 .... 185
8.7.2 復制元素 .... 186
8.7.3 反轉元素 .... 188
8.7.4 移除元素 .... 190
8.7.5 清除元素 .... 191
8.8 數組排序 .. 192
8.8.1 內置排序法 192
8.8.2 冒泡排序法 192
8.8.3 快速排序法 194
8.8.4 選擇排序法 195
8.8.5 插入排序算法 . 196
8.9 高手帶你做——商品信息查詢功能.... 197
8.10 成長任務 199
第3 章 變量、常量與數據類型
要想編寫規范、可讀性高的C# 程序,就必須對C# 有深入透徹的了解。第2 章我們針對C# 程序結構的語法進行了介紹,本章我們學習新的內容。在編寫C# 程序時,如何聲明變量、如何為變量賦值、應該聲明哪些類型的變量、遇到常量怎么辦等,這些都是編程中經常會遇到的一些問題。為了加強開發人員對于C# 的認知,我們在這一章詳細介紹C# 中的變量、常量以及數據類型。
本章學習要點
◎◎ 掌握變量的聲明和賦值
◎◎ 熟悉變量的類型和作用域
◎◎ 了解常量的概念和分類
◎◎ 掌握靜態常量和動態常量的定義
◎◎ 熟悉靜態常量和動態常量的區別
◎◎ 了解數據類型的分類
◎◎ 掌握常用的基本數據類型
◎◎ 了解枚舉、結構和引用類型
◎◎ 掌握隱式數據類型轉換
◎◎ 掌握顯式數據類型轉換
◎◎ 掌握并學會使用Convert類的方法
掃一掃,下載本章視頻文件
3.1 變量
常量和變量是C# 程序中最基礎的兩個元素。變量時時刻刻都存在于C# 程序中,而且變量的值在程序運行期間是可以被更改的。本節詳細介紹C# 中變量的聲明、變量的賦值以及作用域的使用。
3.1.1 聲明變量
對于開發人員來說,變量是用來描述一條信息的別名,在程序代碼中可以使用一個或多個變量。變量中可以存儲各種類型的信息,例如用戶登錄信息、文件名稱、文件大小、某本書的名稱、飛機票的價格等。
一個變量只不過是一個程序操作的存儲區的名字。在C# 中,每個變量都有一個特定的類型,類型決定了變量的內存大小和布局。
C# 中,用戶可以通過指定數據類型和標識符來聲明變量。其基本語法如下:
;
或者:
= value;
上述語法代碼涉及3 個內容:data_type、variable_list 和value。其具體說明如下。
● data_type 變量類型,它必須是一個有效的C#數據類型,例如int、string、char、double等,也可以是用戶自定義的數據類型。
● variable_list 標識符,也叫變量名稱。可以由一個或多個用逗號分隔的標識符組成。
● value 聲明變量時的賦值。變量標識符在命名時需要遵循一定的規則:
● 變量標識符由字母、數字和下劃線“_”組成,不能包含空格、標點符號、運算符等其他符號。
● 變量標識符必須由字母或下劃線“_”開頭,不能以數字開頭。
● 變量標識符不能是C#中的關鍵字,如using、static、namespace和class等。
● 變量標識符區分大小寫,例如name 和Name 是兩個變量。
為變量命名時還需要遵守一些變量命名規范:
● 變量標識符要有意義,盡量用對應的英文命名,使其具有“見名知意”的作用。例如,登錄密碼可以使用password 或mima,避免使用abc、cfa1 等進行命名。
● 避免使用單個字符作為變量名( 在循環里面定義的變量除外)。
● 當使用多個單詞組成變量名時,應該使用駱駝命名法。即第一個單詞的首字母小寫,其他單詞的首字母大寫。例如用戶名稱可以用userName 表示,機票價格可以用airPrice 表示。
【例3-1】
如下代碼分別聲明了string、int、bool 類型的變量:
string userName; //string 類型的變量,表示用戶名稱
int userAge; //int 類型的變量,表示用戶年齡
bool isGirl; //bool類型的變量,表示是否為女性
注意
如果多個變量的類型相同,則可以同時聲明多個變量,在多個變量之間,需要通過逗號進行分隔。
【例3-2】
如下代碼分別聲明string、bool 類型的多個變量:
string userName, userPass;
bool isGirl, isDelete;
在C# 中,變量名有一點是例外的,就是允許為變量名加前綴“@”,所以可以使用“@”加上關鍵字作為變量的名稱。但是,一般情況下,我們不推薦使用前綴“@”作為變量名的一部分。
3.1.2 變量賦值
初始化變量是指為變量指定一個明確的初始值。初始化變量有兩種方式:一種是聲明時直接賦值;一種是先聲明,后賦值。基礎語法如下:
= value; // 聲明時直接賦值
variable_name = value; //先聲明,后賦值
【例3-3】
如下代碼在聲明時直接為變量賦值:
string userName = " 陳曉婷", userPass = "xiaoting123";
int age = 18;
double totalPrice = 34.5;
也可以先聲明變量,然后再賦值,例如,上面的代碼等價于下面的代碼:
string userName, userPass;
int age;
double totalPrice;
userName = " 陳曉婷";
userPass = "xiaoting123";
age = 18;
totalPrice = 34.5;
3.1.3 變量類型
C# 中有7 種變量類型:靜態變量、實例變量、數組元素、數值參數、引用參數、輸出參數和局部變量。
class Program
{
static string stuName = " 徐菲菲"; //聲明stuName 變量
static void Main(string[] args)
{
int age = Student.stuAge; // 調用Student 類的靜態變量
Console.WriteLine("{0} 今年{1} 歲了", stuName,age);
Console.ReadKey();
}
}
在上述Main() 方法中, 通過Student.stuAge 調用Student 類中聲明的stuAge 變量,直接通過stuName 調用當前類的靜態變量。
03 編譯并執行上述代碼,最終的輸出內容如下:
徐菲菲今年12 歲了
2.實例變量
實例變量與靜態變量相反,是指沒有使用static 關鍵字( 修飾符) 聲明的變量,又可以稱為非靜態變量或對象變量。
(1) 類中的實例變量。
當創建某類的一個實例的時候,隸屬于該類的實例變量也被生成,當不再有關于這個實例的引用而且實例的析構函數執行了以后,此實例變量失效。類中實例變量的初始值為這種類型變量的默認值。
(2) 結構體中的實例變量。
一個結構體中的實例變量與隸屬于該結構體的結構變量壽命相同。換句話說,結構體中的實例變量和其中的其他變量被同時創建,并且同時失效。而且該結構體中的實例變量的初始賦值狀態和其中的其余變量一致。
若一個結構體變量是被初始化過的,結構體的實例變量也是如此;反過來說,如果一個結構體變量是沒有經過初始化的,則結構體的實例變量也是沒有經過初始化的。
……