C#作為微軟的旗艦編程語言,深受程序員喜愛,是編寫高效應用程序的先選語言。Visual C# 2013提供瞭大量新功能,本書圍繞語言的基礎知識和這些新功能全麵介紹瞭如何利用Visual Studio 2013和.NET Framework 4.5編寫C#應用程序。本書沿襲深受讀者歡迎的Step by Step風格,通過閤理的練習引導讀者逐步構建在Windows 7和Windows 8.1上運行的應用程序、訪問SQL Server數據庫以及開發多綫程應用等。
《Visual C# 2013從入門到精通》共27章,結構清晰,敘述清楚。所有練習均在Visual Studio 2013簡體中文版上進行過全麵演練。無論是剛開始接觸麵嚮對象編程的新手,還是打算遷移到C#的C、C++或Java程序員,都可以從本書汲取到新的知識。迅速掌握C#編程技術。
Authorized translation from the English language edition, entitled MICROSOFT VISUAL C# 2013 STEP BY STEP,1st Edition, 9780735681835 by SHARP,JOHN,published by Pearson Education, Inc, publishing as Microsoft Press, Copyright © 2014 by John Sharp.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. CHINESE SIMPLIFIED language edition published by TSINGHUA UNIVERSITY PRESS LIMITED Copyright © 2015.
《Visual C# 2013從入門到精通》中文簡體翻譯版由Pearson Education授權給清華大學齣版社在中國境內(不包括中國香港、澳門特彆行政區)齣版發行。
第I部分 Visual C#和Visual Studio 2013概述
第1章 歡迎進入C#編程世界
1.1 開始在Visual Studio 2013環境中編程
1.2 編寫第一個程序
1.3 使用命名空間
1.4 創建圖形應用程序
1.4.1 探索Windows Store應用程序
1.4.2 探索WPF應用程序
1.4.3 嚮圖形應用程序添加代碼
小結
第1章快速參考
第2章 使用變量、操作符和錶達式
2.1 理解語句
2.2 使用標識符
2.3 使用變量
2.3.1 命名變量
2.3.2 聲明變量
2.4 使用基元數據類型
2.4.1 未賦值的局部變量
2.4.2 顯示基元數據類型的值
2.5 使用算術操作符
2.5.1 操作符和類型
2.5.2 深入瞭解算術操作符
2.5.3 控製優先級
2.5.4 使用結閤性對錶達式進行求值
2.5.5 結閤性和賦值操作符
2.6 變量遞增和遞減
2.7 聲明隱式類型的局部變量
小結
第2章快速參考
第3章 方法和作用域
3.1 創建方法
3.1.1 聲明方法
3.1.2 從方法返迴數據
3.1.3 調用方法
3.2 使用作用域
3.2.1 定義局部作用域
3.2.2 定義類作用域
3.2.3 重載方法
3.3 編寫方法
3.4 使用可選參數和具名參數
3.4.1 定義可選參數
3.4.2 傳遞具名參數
3.4.3 消除可選參數和具名參數的歧義
小結
第3章快速參考
第4章 使用判斷語句
4.1 聲明布爾變量
4.2 使用布爾操作符
4.2.1 理解相等和關係操作符
4.2.2 理解條件邏輯操作符
4.2.3 短路求值
4.2.4 操作符的優先級和結閤性總結
4.3 使用if語句做齣判斷
4.3.1 理解if語句的語法
4.3.2 使用代碼塊分組語句
4.3.3 嵌套if語句
4.4 使用switch語句
4.4.1 理解switch語句的語法
4.4.2 遵守switch語句的規則
小結
第4章快速參考
第5章 使用復閤賦值和循環語句
5.1 使用復閤賦值操作符
5.2 使用while語句
5.3 編寫for語句
5.4 編寫do語句
小結
第5章快速參考
第6章 管理錯誤和異常
6.1 處理錯誤
6.2 嘗試執行代碼和捕捉異常
6.2.1 未處理的異常
6.2.2 使用多個catch處理程序
6.2.3 捕捉多個異常
6.2.4 傳播異常
6.3 使用checked和unchecked整數運算
6.3.1 編寫checked語句
6.3.2 編寫checked錶達式
6.4 拋齣異常
6.5 使用finally塊
小結
第6章快速參考
第II部分 理解C#對象模型
第7章 創建並管理類和對象
7.1 理解分類
7.2 封裝的目的
7.3 定義並使用類
7.4 控製可訪問性
7.4.1 使用構造器
7.4.2 重載構造器
7.5 理解靜態方法和數據
7.5.1 創建共享字段
7.5.2 使用const關鍵字創建靜態字段
7.5.3 靜態類
7.5.4 匿名類
小結
第7章快速參考
第8章 理解值和引用
8.1 復製值類型的變量和類
8.2 理解null值和可空類型
8.2.1 使用可空類型
8.2.2 理解可空類型的屬性
8.3 使用ref和out參數
8.3.1 創建ref參數
8.3.2 創建out參數
8.4 計算機內存的組織方式
8.5 System.Object類
8.6 裝箱
8.7 拆箱
8.8 數據類型的安全轉換
8.8.1 is操作符
8.8.2 as操作符
小結
第8章快速參考
第9章 使用枚舉和結構創建值類型
9.1 使用枚舉
9.1.1 聲明枚舉
9.1.2 使用枚舉
9.1.3 選擇枚舉字麵值
9.1.4 選擇枚舉的基本類型
9.2 使用結構
9.2.1 聲明結構
9.2.2 理解結構和類的區彆
9.2.3 聲明結構變量
9.2.4 理解結構的初始化
9.2.5 復製結構變量
小結
第9章快速參考
第10章 使用數組
10.1 聲明和創建數組
10.1.1 聲明數組變量
10.1.2 創建數組實例
10.1.3 填充和使用數組
10.1.4 創建隱式類型的數組
10.1.5 訪問單獨的數組元素
10.1.6 遍曆數組
10.1.7 數組作為方法參數和返迴值傳遞
10.1.8 復製數組
10.1.9 使用多維數組
10.1.10 創建交錯數組
小結
第10章快速參考
第11章 理解參數數組
11.1 迴顧重載
11.2 使用數組參數
11.2.1 聲明參數數組
11.2.2 使用params object[]
11.2.3 使用參數數組
11.3 比較參數數組和可選參數
小結
第11章快速參考
第12章 使用繼承
12.1 什麼是繼承
12.2 使用繼承
12.2.1 復習System.Object類
12.2.2 調用基類構造器
12.2.3 類的賦值
12.2.4 聲明新方法
12.2.5 聲明虛方法
12.2.6 聲明重寫方法
12.2.7 理解受保護的訪問
12.3 理解擴展方法
小結
第12章快速參考
第13章 創建接口和定義抽象類
13.1 理解接口
13.1.1 定義接口
13.1.2 實現接口
13.1.3 通過接口來引用類
13.1.4 使用多個接口
13.1.5 顯式實現接口
13.1.6 接口的限製
13.1.7 定義和使用接口
13.2 抽象類
13.3 密封類
13.3.1 密封方法
13.3.2 實現並使用抽象類
小結
第13章快速參考
第14章 使用垃圾迴收和資源管理
14.1 對象的生存期
14.1.1 編寫析構器
14.1.2 為什麼要使用垃圾迴收器
14.1.3 垃圾迴收器的工作原理
14.1.4 慎用析構器
14.2 資源管理
14.2.1 資源清理方法
14.2.2 異常安全的資源清理
14.2.3 using語句和IDisposable 接口
14.2.4 從析構器中調用Dispose 方法
14.3 實現異常安全的資源清理
小結
第14章快速參考
第III部分 用C#定義可擴展類型
第15章 實現屬性以訪問字段
15.1 使用方法實現封裝
15.2 什麼是屬性
15.2.1 使用屬性
15.2.2 隻讀屬性
15.2.3 隻寫屬性
15.2.4 屬性的可訪問性
15.3 理解屬性的局限性
15.4 在接口中聲明屬性
15.5 生成自動屬性
15.6 使用屬性來初始化對象
小結
第15章快速參考
第16章 使用索引器
16.1 什麼是索引器
16.1.1 不用索引器的例子
16.1.2 使用索引器的同一個例子
16.1.3 理解索引器的訪問器
16.1.4 對比索引器和數組
16.2 接口中的索引器
16.3 在Windows應用程序中使用索引器
小結
第16章快速參考
第17章 泛型概述
17.1 object的問題
17.2 泛型解決方案
17.2.1 對比泛型類與常規類
17.2.2 泛型和約束
17.3 創建泛型類
17.3.1 二叉樹理論
17.3.2 使用泛型構造二叉樹類
17.4 創建泛型方法
17.5 可變性和泛型接口
17.5.1 協變接口
17.5.2 逆變接口
小結
第17章快速參考
第18章 使用集閤
18.1 什麼是集閤類
18.1.1 List集閤類
18.1.2 LinkedList集閤類
18.1.3 Queue集閤類
18.1.4 Stack集閤類
18.1.5 Dictionary集閤類
18.1.6 SortedList集閤類
18.1.7 HashSet集閤類
18.2 使用集閤初始化器
18.3 Find方法、謂詞和Lambda錶達式
18.4 比較數組和集閤
小結
第18章快速參考
第19章 枚舉集閤
19.1 枚舉集閤中的元素
19.1.1 手動實現枚舉器
19.1.2 實現IEnumerable接口
19.2 使用迭代器來實現枚舉器
19.2.1 一個簡單的迭代器
19.2.2 使用迭代器為Tree類定義枚舉器
小結
第19章快速參考
第20章 分離應用程序邏輯並處理事件
20.1 理解委托
20.1.1 .NET Framework類庫的委托例子
20.1.2 自動化工廠的例子
20.1.3 不使用委托來實現工廠
20.1.4 使用委托來實現工廠
20.1.5 聲明和使用委托
20.2 Lambda錶達式和委托
20.2.1 創建方法適配器
20.2.2 Lambda錶達式的形式
20.3 啓用事件通知
20.3.1 聲明事件
20.3.2 訂閱事件
20.3.3 取消訂閱事件
20.3.4 引發事件
20.4 理解用戶界麵事件
小結
第20章快速參考
第21章 使用查詢錶達式來查詢內存中的數據
21.1 什麼是語言集成查詢
21.2 在C#應用程序中使用LINQ
21.2.1 選擇數據
21.2.2 篩選數據
21.2.3 排序、分組和聚閤數據
21.2.4 聯接數據
21.2.5 使用查詢操作符
21.2.6 查詢Tree對象中的數據
21.2.7 LINQ和推遲求值
小結
第21章快速參考
第22章 操作符重載
22.1 理解操作符
22.1.1 操作符的限製
22.1.2 重載的操作符
22.1.3 創建對稱操作符
22.2 理解復閤賦值
22.3 聲明遞增和遞減操作符
22.4 比較結構和類中的操作符
22.5 定義成對的操作符
22.6 實現操作符
22.7 理解轉換操作符
22.7.1 提供內建轉換
22.7.2 實現用戶自定義的轉換操作符
22.7.3 再論創建對稱操作符
22.7.4 添加隱式轉換操作符
小結
第22章快速參考
第IV部分 使用C#構建Windows 8.1專業應用
第23章 使用任務提高吞吐量
23.1 使用並行處理來執行多任務處理
23.2 用.NET Framework實現多任務處理
23.2.1 任務、綫程和綫程池
23.2.2 創建、運行和控製任務
23.2.3 使用Task類實現並行處理
23.2.4 使用Parallel類對任務進行抽象
23.2.5 什麼時候不要使用Parallel類
23.3 取消任務和處理異常
23.3.1 協作式取消的原理
23.3.2 為Canceled和Faulted任務使用延續任務
小結
第23章快速參考
第24章 通過異步操作提高響應速度
24.1 實現異步方法
24.1.1 定義異步方法:問題
24.1.2 定義異步方法:解決方案
24.1.3 定義返迴值的異步方法
24.1.4 異步方法和Windows RuntimeAPI
24.2 用PLINQ進行並行數據訪問
24.2.1 用PLINQ增強遍曆集閤時的性能
24.2.2 取消PLINQ查詢
24.3 同步對數據的並發訪問
24.3.1 鎖定數據
24.3.2 用於協調任務的同步基元
24.3.3 取消同步
24.3.4 並發集閤類
24.3.5 使用並發集閤和鎖來實現綫程安全的數據訪問
小結
第24章快速參考
第25章 實現Windows Store應用程序的用戶界麵
25.1 什麼是Windows Store應用
25.2 使用空白模闆構建Windows Store應用
25.2.1 實現可伸縮的用戶界麵
25.2.2 嚮用戶界麵應用樣式
小結
第25章快速參考
第26章 在Windows Store應用程序中顯示和搜索數據
26.1 實現Model-View-ViewModel模式
26.1.1 通過數據綁定顯示數據
26.1.2 通過數據綁定修改數據
26.1.3 為ComboBox控件使用數據綁定
26.1.4 創建ViewModel
26.1.5 嚮ViewModel添加命令
26.2 Windows 8.1閤約
26.2.1 實現搜索閤約
26.2.2 導航至所選項
小結
第26章快速參考
第27章 在Windows Store應用程序中 訪問遠程數據庫
27.1 從數據庫獲取數據
27.1.1 創建實體模型
27.1.2 創建和使用REST Web 服務
27.2 通過REST Web服務插入、更新 和刪除
小結
第27章快速參考
第1部分
VisualC#和VisualStudio2013概述
MicrosoftVisualC#是Microsoft的一種強大的、麵嚮組件的語言。C#在Microsoft.NETFramework的架構中扮演重要角色,一些人甚至將它與C在UNIX開發中的地位相提並論。如果懂得C、C++或Java語言,會發現C#的語法非常熟悉。即使以前習慣用其他語言寫程序,也能迅速掌握C#的語法——隻需學會在恰當的地方添加大括號和分號。
第Ⅰ部分是C#基礎知識。將學習如何聲明變量,如何使用加(+)和減(-)操作符操縱變量中的值,如何寫方法和嚮方法傳遞實參,如何使用選擇語句(例如if)和循環語句(例如while),以及如何利用“異常”得體和方便地處理錯誤。這些主題構成瞭C#語言的核心。掌握瞭這些基礎知識,就可順利過渡到第Ⅱ~IV部分的高級主題。
第1章歡迎進入C#編程世界
本章旨在教會你:
使用VisualStudio2013編程環境
創建C#控製颱應用程序
使用命名空間
創建簡單的C#圖形應用程序
本章是VisualStudio2013入門指引。VisualStudio2013是Windows應用程序理想的編程環境。它提供瞭豐富的工具集,是寫C#代碼的好幫手。本書將循序漸進解釋它的眾多功能。本章用VisualStudio2013構建簡單C#應用程序,為開發高級Windows解決方案做好鋪墊。
1.1開始在VisualStudio2013環境中編程
VisualStudio2013編程環境提供瞭豐富的工具,能創建從小到大、在Windows7,Windows8和Windows8.1上運行的C#項目。在創建的項目中,甚至能無縫閤並用不同語言(比如C++,VisualBasic和F#)寫的模塊。第一個練習是啓動VisualStudio2013編程環境,並學習如何創建控製颱應用程序。
注意控製颱應用程序是在命令提示符窗口而非圖形用戶界麵(GUI)中運行的應用程序。
在VisualStudio2013中創建控製颱應用程序
如果使用Windows8.1或Windows8,在“開始”屏幕上輸入VisualStudio,在“搜索結果”窗格中點擊“VisualStudio2013”。
注意要在Windows8和Windows8.1上查找應用程序,可在“開始”屏幕上直接輸入應用程序名稱。搜索結果窗格自動齣現。
將啓動VisualStudio2013並顯示如下圖所示的起始頁(取決於所用的VisualStudio2013版本,你的起始頁可能不同)。
注意首次運行VisualStudio2013會齣現對話框,提示選擇默認開發環境設置。VisualStudio2013根據首選開發語言自動調整。集成開發環境(IntegratedDevelopmentEnvironment,IDE)的各個對話框和工具將根據所選的語言創建默認設置。請從列錶中選擇“VisualC#開發設置”,然後單擊“啓動VisualStudio”按鈕。稍候片刻,就會齣現VisualStudio2013IDE。
如果使用Windows7,按以下步驟啓動VisualStudio2013。
1.單擊“開始”按鈕,選擇“所有程序”|“MicrosoftVisualStudio2013”程序組。
2.在MicrosoftVisualStudio2013程序組中,單擊MicrosoftVisualStudio2013。
隨後會啓動VisualStudio2013並顯示起始頁。
注意為避免重復,以後不管使用的操作係統是什麼,需要啓動VisualStudio2013時都隻是簡單地說“啓動VisualStudio”。
?執行以下任務,新建控製颱應用程序。
1.在“文件”菜單中選擇“新建”|“項目”。
隨後齣現下圖所示的“新建項目”對話框。對話框列齣瞭一些模闆,可以在這些模闆的基礎上構建應用程序。模闆按照語言和應用程序類型進行分類。
2.在左側窗格選擇“模闆”下的“VisualC#”。在中間窗格,驗證頂部組閤框顯示的是“.NETFramework4.5”,然後單擊“控製颱應用程序”圖標。
3.在“位置”文本框中輸入C:UsersYourNameDocumentsMicrosoftPressVisualCSharpStepbyStepChapter1。將YourName替換成具體的Windows用戶名。
注意為節省篇幅,以後將路徑C:UsersYourNameDocuments簡稱為Documents或“文檔”文件夾。
提示如果指定的文件夾不存在,VisualStudio2013會自動創建。
4.在“名稱”文本框中輸入TestHello(覆蓋默認名稱)。
5.確定已勾選“為解決方案創建目錄”復選框,然後單擊“確定”按鈕。
VisualStudio將使用“控製颱應用程序”模闆創建項目,並顯示項目初始代碼,如下圖所示。
可利用屏幕頂部的菜單欄訪問編程環境提供的各項功能。和其他所有Windows程序一樣,菜單和命令可通過鍵盤或鼠標訪問。菜單欄下方是工具欄,提供瞭一係列快捷按鈕,用於執行最常用的命令。
占據IDE大部分的“代碼和文本編輯器”窗口顯示瞭源文件的內容。編輯含有多個文件的項目時,每個源文件都有自己的“標簽”,標簽中顯示的是源文件的文件名。單擊標簽,即可在“代碼和文本編輯器”中顯示對應的源文件。
最右側是“解決方案資源管理器”,如下圖所示。
“解決方案資源管理器”顯示瞭項目相關文件的名稱以及其他內容。在其中雙擊文件名,即可在“代碼和文本編輯器”中顯示該文件的內容。
開始寫代碼之前,可以檢查一下“解決方案資源管理器”列齣的文件,它們是作為項目的一部分由VisualStudio2013創建的。
解決方案“TestHello”解決方案文件位於最頂級。每個應用程序都有這樣的一個文件。解決方案中可包含一個或多個項目,VisualStudio2013利用這個解決方案文件對項目進行組織。在Windows資源管理器中查看“文檔”文件夾下的MicrosoftPressVisualCSharpStepbyStepChapter1TestHello文件夾,會發現該文件的實際名稱是TestHello.sln。
TestHello這是C#項目文件。每個項目文件都引用一個或多個包含項目源代碼以及其他內容(比如圖片)的文件。一個項目的所有源代碼都必須使用相同的編程語言。在Windows資源管理器中,該文件的實際名稱是TestHello.csproj,保存在“文檔”文件夾下的MicrosoftPressVisualCSharpStepbyStepChapter1TestHelloTestHello子文件夾中。
Properties這是TestHello項目中的一個文件夾。展開它會發現AssemblyInfo.cs文件。AssemblyInfo.cs是特殊文件,用於為程序添加“特性”(attribute),如作者姓名和程序編寫日期等。還可利用一些特性修改程序運行方式。至於具體如何利用這些特性,已經超齣瞭本書的範圍。
引用該文件夾包含對已編譯好的代碼庫的引用。C#代碼編譯時會轉換成庫,並獲得唯一名稱。.NETFramework將這種庫稱為程序集(assembly)。開發人員利用程序集打包自己開發的有用功能,並分發給其他程序員,以便他們在自己的程序中使用。展開“引用”文件夾會看到VisualStudio2013在項目中添加的一組默認程序集引用。利用這些程序集可訪問.NETFramework的大量常用功能。本書將通過練習幫助你熟悉這些程序集。
App.config應用程序配置文件。由於是可選的,所以並非肯定存在該文件。可在其中指定設置,讓應用程序在運行時修改其行為,比如修改運行應用程序的.NETFramework版本。以後將更深入地探討該文件。
Program.csC#源代碼文件。項目最初創建時,“代碼和文本編輯器”顯示的就是該文件,稍後要在該文件中為控製颱應用程序編寫代碼。它包含VisualStudio2013自動生成的一些代碼,稍後將詳細討論。
1.2編寫第一個程序
Program.cs文件定義瞭Program類,其中包含Main方法。在C#中,所有可執行代碼都必須在方法中定義,而方法必須從屬於類或結構。類將在第7章討論,結構將在第9章討論。
Main方法指定程序的入口。該方法在Program類中必須定義為靜態方法,否則應用程序運行時,.NETFramework可能不把它視為起點。方法將在第3章討論,靜態方法將在第7章討論。
重要提示C#區分大小寫。Main的首字母必須大寫。
後麵的練習將寫一些代碼在控製颱中顯示消息“HelloWorld!”,將生成並運行這個HelloWorld控製颱應用程序,並學習如何使用命名空間對代碼元素進行分區。
利用“智能感知”(IntelliSense)寫代碼
1.在顯示瞭Program.cs文件的“代碼和文本編輯器”中,將光標定位到Main方法的左大括號{後麵,按Enter鍵另起一行。
2.在新的一行中,鍵入單詞Console,這是由應用程序引用的程序集提供的一個類。Console類提供瞭在控製颱窗口中顯示消息和讀取鍵盤輸入的方法。
鍵入單詞Console的首字母C時,會顯示一個“智能感知”列錶(如下圖所示)。
其中包含在當前上下文中所有有效的C#關鍵字和數據類型。可繼續輸入其他字母,也可在列錶中滾動並用鼠標雙擊Console項。還有一個辦法是,一旦鍵入Cons,智能感知列錶就會自動定位到Console這一項,此時按Tab鍵或Enter鍵即可選中並輸入它。
現在的Main方法如下所示:
staticvoidMain(string[]args)
{
Console
}
注意Console是內建的類。
3.緊接著單詞Console輸入句點。隨後會齣現另一個智能感知列錶,其中顯示瞭Console類的方法、屬性和字段。
4.在列錶中嚮下滾動,直到選中WriteLine,再按Enter鍵。還有一個辦法,繼續輸入字符W,r,i,t,e,L,直到WriteLine被自動選定再按Enter鍵。
隨後,智能感知列錶關閉,WriteLine方法添加到源代碼文件中。現在的Main方法如下所示:
staticvoidMain(string[]args)
{
Console.WriteLine
}
5.輸入起始圓括號(。隨後齣現智能感知提示。
其中顯示瞭WriteLine方法支持的參數。WriteLine是重載方法。換言之,Console類包含多個名為WriteLine的方法,實際上有19個之多。可用WriteLine方法的不同版本輸齣不同類型的數據(重載方法將在第3章討論)。現在的Main方法如下所示:
staticvoidMain(string[]args)
{
Console.WriteLine(
}
提示單擊上下箭頭或者按上下鍵切換WriteLine的不同重載版本。
6.輸入結束圓括號),再加一個分號。現在的Main方法如下所示:
staticvoidMain(string[]args)
{
Console.WriteLine();
}
7.移動光標,在WriteLine後麵的圓括號之間輸入字符串"HelloWorld!",引號也包含在內。現在的Main方法如下所示:
staticvoidMain(string[]args)
{
Console.WriteLine("HelloWorld!");
}
提示好習慣是先連續輸入一對匹配的字符,例如(和)以及{和},再在其中填寫內容。如果先填寫內容,很容易忘記輸入結束字符。
智能感知圖標
在類名後輸入句點,“智能感知”將顯示類的每個成員的名稱。每個成員名稱左側有一個指示成員類型的圖標。下錶總結瞭圖標及其代錶的類型。
圖標含義
方法(第3章)
屬性(第15章)
類(第7章)
結構(第9章)
枚舉(第9章)
擴展方法(第9章)
接口(第13章)
委托(第17章)
事件(第17章)
命名空間(本章下一節)
在不同上下文中輸入代碼時,還可能看到其他“智能感知”圖標。
一些代碼包含兩個正斜杠,後跟一些文本,這稱為注釋。它們會被編譯器忽略,但對開發人員來說非常有用,因為可以用注釋來記錄代碼實際采取的操作。示例如下:
Console.ReadLine();//等待用戶按Enter鍵
從兩個正斜杠到行末,所有文本都被編譯器忽略。也可用/*添加多行注釋。編譯器將跳過它之後的一切內容,直到遇到*/(可能齣現在多行之後)。建議盡量使用詳細的注釋對自己的代碼進行編檔。
?生成並運行控製颱應用程序
1.在“生成”菜單中,單擊“生成解決方案”。
這樣會編譯C#代碼並生成可運行的程序。在“代碼和文本編輯器”下方會顯示“輸齣”窗口。
提示如果“輸齣”窗口沒有齣現,請在“視圖”菜單中選擇“輸齣”。
“輸齣”窗口顯示如下所示的消息,告訴你程序的編譯過程。
1>------已啓動生成:項目:TestHello,配置:DebugAnyCPU------
1>TestHello->C:UserszjDocumentsMicrosoftPressVisualCSharpStepByStepChapter1TestHelloTestHelloinDebugTestHello.exe
==========生成:成功1個,失敗0個,最新0個,跳過0個==========
程序錯誤在“錯誤列錶”窗口中顯示。下圖顯示瞭忘記在WriteLine語句的HelloWorld!文本後輸入結束引號的後果。注意,一個錯誤有時可能導緻多個編譯錯誤。
提示在“錯誤列錶”窗口中雙擊錯誤,光標會移到導緻錯誤的代碼行。另外,輸入一行不能編譯的代碼,VisualStudio會在其下方顯示一條紅色的波浪綫。
仔細按前麵的步驟操作,就不應齣現任何錯誤或警告,程序應成功生成。
提示生成前不必存盤,因為“生成解決方案”命令會自動存盤。在“代碼和文本編輯器”的標簽中,文件名後的星號錶明自上次存盤以來文件內容已發生修改。
2.在“調試”菜單中,單擊“開始執行(不調試)”。
隨即打開命令窗口,程序開始運行。顯示“HelloWorld!”消息,程序等待用戶按任意鍵繼續(如下圖所示)。
注意“請按任意鍵繼續…”提示由VisualStudio自動生成,不必專門為此寫代碼。如果使用“調試”菜單中的“啓動調試”命令運行程序,應用程序也會運行,但命令窗口在顯示“HelloWorld!”後立即關閉,不會停下來等著按鍵。
3.確認當前焦點是這個命令窗口,按Enter鍵(或其他任意鍵)。
命令窗口關閉,並返迴VisualStudio。
4.在“解決方案資源管理器”中單擊TestHello項目(而不是解決方案),然後單擊“解決方案資源管理器”工具欄中的“顯示所有文件”按鈕(如下圖所示)。如果看不到該按鈕,單擊>>按鈕來找到它。
隨後,Program.cs文件的上方會顯示bin和obj。這兩項直接對應於項目文件夾(MicrosoftPressVisualCSharpStepbyStepChapter1TestHelloTestHello)中的bin和obj文件夾。這些文件夾在生成應用程序時由VisualStudio創建,包含應用程序的可執行版本,以及用於生成和調試應用程序的其他文件。
5.在“解決方案資源管理器”中展開bin文件夾。
隨即顯示另一個名為Debug的文件夾。
注意也許還會看到一個名為Release的文件夾。
6.在“解決方案資源管理器”中展開Debug文件夾。
隨即顯示更多子項,其中TestHello.exe是編譯好的程序。在“調試”菜單中選擇“開始執行(不調試)”運行的就是它。其他文件包含瞭在調試模式下運行程序(選擇“調試”菜單中的“啓動調試”命令)要由VisualStudio2013使用的信息。
1.3使用命名空間
前麵的例子隻是很小的程序。然而,小程序可能很快變成大程序。隨著程序規模的增大,兩個問題隨之而來。首先,代碼越多,就越難理解和維護。其次,更多代碼通常意味著更多類和方法,要求你跟蹤更多名稱。隨著名稱越來越多,極有可能因為兩個或多個名稱衝突而造成項目無法生成。例如,可能試圖創建兩個同名的類。如果程序引用瞭其他開發人員寫的程序集,後者同樣使用瞭大量名稱,這個問題將變得更嚴重。
過去,程序員通過為名稱添加某種形式的限定符前綴來解決名稱衝突問題。但這並不是好的方案,因為它不具有擴展性。名稱變長後,打字的時間就增多瞭,還要花更多時間來反復閱讀令人費解的長名字,真正花在寫軟件上的時間就少瞭。
命名空間(namespace)可解決這個問題,它為類這樣的東西創建容器。同名類在不同命名空間中不會混淆。可用namespace關鍵字在TestHello命名空間中創建Greeting類,如下所示:
namespaceTestHello
{
classGreeting
{
...
}
}
然後在自己的程序中使用TestHello.Greeting引用Greeting類。如果有人在不同命名空間(例如NewNamespace)中也創建瞭Greeting類,並把它安裝到你的機器上,你的程序仍能正常工作,因為程序使用的是TestHello.Greeting類。另一名開發者的Greeting類要用NewNamespace.Greeting進行引用。
作為好習慣,所有類都應該在命名空間中定義,VisualStudio2013環境默認使用項目名稱作為頂級命名空間。.NETFramework類庫(FCL)也遵循這個約定,它的每個類都在一個命名空間中。例如,Console類在System命名空間中。這意味著它的全名實際是System.Console。
.......
MicrosoftVisualC#是一種功能強大、使用簡單的語言,主要麵嚮需要使用Microsoft.NETFramework來創建應用程序的開發者。它在C++和MicrosoftVisualBasic的基礎上去蕪存菁,最終形成瞭一種更加清晰、更富有邏輯的語言。C#1.0於2001年亮相。幾年後隨著C#2.0和VisualStudio2005的問世,語言新增瞭幾個重要功能,包括泛型、迭代器和匿名方法等。隨同MicrosoftVisualStudio2008發布的C#3.0添加瞭更多功能,包括擴展方法、Lambda錶達式以及語言集成查詢(LanguageIntegratedQuery,LINQ)。2010年發布的C#4.0繼續增強,改善瞭與其他語言和技術的互操作性。新增功能包括具名參數和可選參數,另外還有dynamic類型(指示語言的“運行時”對對象進行晚期綁定)。在隨同C#4.0發布的.NETFramework中,最重要的新功能就是“任務並行庫”(TaskParallelLibrary,TPL)。可用TPL構建具有良好伸縮性的應用程序,從而快速和簡單地發揮齣多核處理器的潛力。C#5.0則通過async修飾符和await操作符提供瞭對異步任務的原生支持。
Windows8是Microsoft近年來最具革命性的一款操作係統。新操作係統支持高度交互式的應用程序,它們能相互分享和協作,還能輕鬆連接雲端服務。VisualStudio2012開發環境使這些強大功能變得容易使用,大量新嚮導和增強顯著提高瞭開發效率。VisualStudio2012、Windows8和C#5.0三劍客提供瞭完善的平颱和工具集來幫助你開發下一代的、功能強大的、直觀的而且容易移植的應用程序。
在認真傾聽瞭開發人員的反饋之後,Microsoft對UI進行瞭一些修訂並發布瞭Windows8.1,同時發布的還有VisualStudio2013,其中包含VisualStudio2012的纍積更新並增添瞭一些新功能來進一步提升編程效率。雖然對VisualStudio的許多更新都不大,而且C#語言本身沒有發生任何變化,但我們認為由於Windows8.1在UI上發生瞭變化,所以有必要對本書進行一番修訂,這正是這一版的來由。
注意本書原版基於VisualStudio2013TechnicalPreview和Windows8.1。中文版則針對VisualStudio2013正式版和Windows8.1Update1進行瞭全麵修訂。
本書麵嚮的讀者
本書假定你要使用VisualStudio2013和.NETFramework4.5.1學習基礎的C#編程知識。學完本書後,會對C#有一個全麵、透徹的理解,會用它開發反應靈敏的、可伸縮的、能在Windows操作係統上運行的應用程序。
C#5.0應用程序在Windows7、Windows8和Windows8.1上都能生成和運行。但Windows7和Windows8在UI上有很大區彆。另外,Windows8.1對UI模型進行瞭一些修改,造成使用新功能的應用程序在Windows8上可能無法運行。因此,本書的設計是第I到第III部分的練習和示例在三種環境中都能運行,但第IV部分專注於Windows8.1開發,強調瞭如何針對新平颱開發交互式程序。
本書不麵嚮的讀者
本書麵嚮剛開始用C#進行開發的人士,重點放在C#語言上麵。本書不涉及企業級Windows應用程序的開發技術,比如ADO.NET、ASP.NET、WindowsCommunicationFoundation或者WorkflowFoundation。要瞭解這些方麵的知識,可參考《從入門到精通》係列的其他書籍,包括《MicrosoftASP.NET4從入門到精通》、《MicrosoftADO.NET4從入門到精通》以及《MicrosoftWindowsCommunicationFoundation4從入門到精通》。
本書的組織
本書分為以下四大部分。
第I部分“VisualC#和VisualStudio2013概述”介紹瞭C#語言的核心語法,還演示瞭VisualStudio編程環境。
第II部分“理解C#對象模型”深入探討如何用C#創建和管理新類型,以及如何管理這些類型引用的資源。
第III部分“用C#定義可擴展類型”全麵討論瞭如何利用C#語言元素來構建能在多個應用程序中重用的類型。
第IV部分“使用C#構建專業Windows8.1應用程序”描述瞭Windows8.1編程模型,以及如何用C#為新模型構建交互式應用程序。
注意雖然第IV部分麵嚮Windows8.1,但第23章和第24章的一些概念還是適用於Windows7和Windows8應用程序。
導讀
本書幫助你掌握多個基本領域的開發技能。無論剛開始學習編程,還是從另一種語言(C、C++、Java或VisualBasic)轉嚮C#,本書都能提供幫助。參考下錶找到最佳起點。
讀者類型
麵嚮對象編程的新手
步驟
1.按照“範例代碼”一節的步驟安裝練習文件
2.順序閱讀第Ⅰ部分、第Ⅱ部分和第Ⅲ部分
3.有瞭一定經驗後,如果有興趣,繼續完成第Ⅳ部分的學習
續錶
讀者類型
熟悉C語言等過程編程語言,但新涉足C#
步驟
1.按照“範例代碼”一節的步驟安裝練習文件
2.略讀前6章來獲得對C#和VisualStudio2013的大緻印象,重點閱讀第7~22章
3.閱讀第Ⅳ部分瞭解如何構建可伸縮的Windows8.1應用程序
從麵嚮對象語言C++或Java等遷移到C#1.按照“範例代碼”一節的步驟安裝練習文件
2.略讀前7章,獲得對C#語言和VisualStudio2013的大緻印象,
重點閱讀第8~22章
3.閱讀第Ⅳ部分瞭解如何構建可伸縮的Windows8.1應用程序
從VisualBasic遷移到C#1.按照“範例代碼”一節的步驟安裝練習文件
2.順序閱讀第Ⅰ部分、第Ⅱ部分和第Ⅲ部分
3.Windows8.1應用程序開發請閱讀第Ⅳ部分
4.閱讀每章末尾的“快速參考”小節,瞭解C#特有的構造做完所有練習後再將本書作為參考書使用的讀者1.根據目錄尋找特定主題的信息2.閱讀每章最後的“快速參考”,查看語法和技術歸納本書大多數章節都通過實際的例子方便讀者鞏固剛學到的知識。無論感興趣的是哪個主題,都注意先下載並安裝好範例代碼。
本書的約定和特色本書通過一些約定來增強內容的可讀性,以便於讀者理解。
每個練習都用編號的操作步驟來完成。
“注意”等特色段落提供瞭成功完成一個步驟需要瞭解的額外信息或替代方案。
要求讀者輸入的文本加粗顯示。
兩個鍵名之間的加號(+)意味著必須同時按下這兩個鍵。例如,“按Alt+Tab鍵”意味著按住Alt鍵不放,然後按Tab鍵。
描述菜單操作時,采取“文件”|“打開”的形式,意思是從“文件”菜單中選擇“打開”命令。
係統需求
為瞭完成本書的練習,需準備以下硬件和軟件:
Windows7(x86或x64),Windows8(x86或x64),Windows8.1(x86或x64),WindowsServer2008R2(x64),WindowsServer2012(x64)或者WindowsServer2012R2(x64)
注意VisualStudio2013的WindowsStore模闆不可用於Windows8,Windows7,WindowsServer2012或WindowsServer2008R2。要使用這些模闆,或者要執行生成WindowsStore應用的那些練習,操作係統必須是Windows8.1或WindowsServer2012R2。
VisualStudio2013(除VisualStudioExpressforWindows8.1之外的任意版本)
注意可以使用VisualStudioExpress2013forWindowsDesktop,但就隻能執行本書的Windows7版本的練習。不可用它執行第IV部分的練習。
1.6GHz或更快的處理器(推薦2GHz以上)32位操作係統至少1GBRAM,64位至少2GBRAM。在虛擬機中運行再加512MB10GB剩餘硬盤空間支持DirectX9的顯示卡,1024×768或更高分辨率。Windows8.1推薦1366×768或更高分辨率DVD-ROM驅動器(如果從DVD安裝VisualStudio)下載軟件和範例代碼需要Internet連接此外,還需要以管理員身份安裝和配置Visualtudio2013。
範例代碼
本書的配套網絡資源包含練習時會用到的範例代碼。使用這些範例代碼,讀者不再需要浪費時間創建和練習無關的文件。藉助於這些練習文件和課程中描述的步驟,讀者可以在實踐中學習,這是迅速掌握並記住新的編程技能的一種簡單而高效的方式。
按以下步驟在計算機上安裝本書配套代碼。
1.在InternetExplorer或其他瀏覽器的地址欄中輸入transbot.ys168.com。
2.點擊和本書對應的目錄,並下載源代碼文件壓縮包。
3.將壓縮包解壓到計算機的“文檔”文件夾。如下圖所示。
使用練習文件
本書每一章都解釋瞭在什麼時候以及如何使用必要的練習文件。需要使用練習文件的時候,書中會給齣相應的指示,幫助你打開正確的文件。
如果想知道所有細節,可以參見下錶,其中列齣瞭本書要用到的所有VisualStudio2013項目和解決方案,它們以文件夾的形式進行分組以便查找。練習通常會為同一個項目提供初始文件和完成之後的版本。有的練習提供Windows7和Windows8.1兩個版本,操作步驟會針對不同操作係統給齣相應的指示。已完成的項目存儲在帶有-Complete後綴的文件夾中。
注意如果使用Windows7、Windows8、WindowsServer2012或WindowsServer2008R2,按照Windows7的步驟操作。如果使用Windows8.1或WindowsServer2012R2,按照Windows8.1的步驟操作。
項目名稱說明
第1章
TextHello作為第一個項目,它指導你創建一個簡單程序來顯示歡迎文本
WPFHello使用WPF技術在窗口中顯示歡迎文本
第2章
PrimitiveDataTypes演示如何使用基元類型來聲明變量,如何嚮變量賦值,如何在窗口中顯示值
MathsOperators演示瞭算術操作符(+、–、*、/、%)
第3章
Methods改進上個項目的代碼,體會如何使用方法來建立代碼的結構
DailyRate指導你寫自己的方法,執行方法,使用VisualStudio2013調試器來單步執行方法
使用可選參數的DailyRate演示如何讓方法獲取可選參數,如何使用具名參數來調用方法
第4章
Selection演示如何用嵌套if語句實現復雜邏輯,例如比較兩個日期的相等性
SwitchStatement這個簡單的程序使用一個switch語句將字符轉換成相應的XML形式
第5章
WhileStatement用while語句逐行讀取源文件,在Windows窗體的文本框中顯示每一行
DoStatement使用do語句將十進製數轉換成八進製續錶
項目名稱說明
第6章
MathsOperators對第2章的MathsOperators項目進行改進,試驗會造成程序執行失敗的各種未處理的異常。然後,用try和catch關鍵字使應用程序更健壯,防止因為錯誤輸入或操作而失敗
第7章
Classes演示如何定義自己的類,為它添加公共構造器、方法和私有字段;還演示如何用new關鍵字創建類的實例,如何定義靜態方法和字段
第8章
Parameters演示值類型和引用類型的參數的區彆,還演示如何使用ref和out關鍵字
第9章
StructsAndEnums定義結構來錶示日期
第10章
Cards使用數組來建模紙牌遊戲中的一手牌
第11章
ParamsArrays演示如何使用params關鍵字使方法能接受任意數量的參數
第12章
Vehicles用繼承創建簡單的交通工具類,還演示如何定義虛方法
ExtensionMethod演示如何為int類型創建擴展方法,允許將整數從十進製轉換成其他進製
第13章
DrawingUsingInterfaces實現圖形繪圖包的一部分。用接口定義要由幾何圖形對象公開並實現的方法
DrawingUsingAbstractClasses擴展瞭DrawingUsingInterfaces項目,將幾何圖形對象的常用功能集成到抽象類中
第14章
GarbageCollectionDemo演示如何使用Dispose模式實現異常安全的資源清理
第15章
DrawingUsingProperties擴展第13章的DrawingUsingAbstractClasses項目,用屬性將數據封裝到類中
AutomaticProperties演示如何為類創建自動屬性,如何用它們初始化類的實例
第16章
Indexers該項目使用瞭兩個索引器,一個根據姓名查找電話號碼,另一個根據電話號碼查找姓名
第17章
BinaryTree演示如何使用泛型生成類型安全的結構,可包含任何類型的元素
BuildTree演示如何使用泛型實現類型安全的方法,可獲取任何類型的參數
第18章
Cards升級第10章的代碼,演示如何用集閤建模一手牌
續錶
項目名稱說明
第19章
BinaryTree演示如何實現泛型IEnumerator
IteratorBinaryTree用迭代器為泛型Tree類生成枚舉器
第20章
Delegates演示如何通過委托調用方法,將方法的邏輯和調用方法的應用程序分開
DelegatesWithEvent演示如何用事件提醒對象發生瞭某事,如何捕捉事件並執行需要的處理
第21章
QueryBinaryTree演示如何通過LINQ查詢從二叉樹對象獲取數據
第22章
ComplexNumbers定義新類型來建模復數,並為這種類型實現常用的操作符
第23章
GraphDemo生成並在WPF窗體上顯示復雜圖錶。使用單綫程執行計算
GraphDemoWithTasks創建多個任務,並行執行圖錶計算
ParallelGraphDemo使用Parallel類對創建和管理任務的過程進行抽象
GraphDemoWithCancellation中途得體地取消任務
ParallelLoop演示何時不該使用Parallel類創建和運行任務
第24章
GraphDemo修改第23章的同名項目,使用async關鍵字和await操作符異步計算圖錶數據
PLINQ使用並行任務,用PLINQ查詢數據
CalculatePI使用統計學采樣計算PI的近似值。使用瞭並行任務
第25章
CustomersWithoutScalableUI使用默認Grid控件進行AdventureWorks公司的Customers應用程序的UI布局。控件使用絕對定位,屏幕分辨率和設備大小改變時,不會自動伸縮
CustomersWithScalableUI使用嵌套Grid控件並定義行和列來實現控件的相對定位。這個版本的UI能自動適應不同的屏幕分辨率和設備大小。但在貼靠視圖中錶現不佳
CustomersWithAdaptiveUI對上一個可伸縮UI進行擴展。使用VisualStateManager檢測切換到貼靠視圖的事件,並相應修改控件布局
CustomersWithStyles
使用XAML樣式更改字體和背景圖片
第26章
DataBinding使用數據綁定在UI中顯示從數據源獲取的客戶資料;還演示瞭如何實現INotifyPropertyChanged接口,從而允許UI更新客戶資料,並將改動發送迴數據源
ViewModel通過實現Model-View-ViewModel模式,將UI同數據源訪問邏輯分開
Search實現Windows8.1搜索閤約,按名字或姓氏搜索客戶
續錶
項目名稱說明
第27章
DataService這個解決方案包含一個Web應用程序來提供RESTWeb服務,使Customers應用程序能從SQLServer數據庫獲取客戶數據。RESTWeb服務通過由實體框架創建的實體模型來訪問數據庫
UpdatableViewModel這個解決方案中的Customers項目包含一個擴展的ViewModel,它提供許多命令,允許UI通過RESTWeb服務插入和更新客戶資料
新书就这么给我弄折书角了,物流不知道是怎么放的
评分适合入门学习,和纯C#学习,尤其适合使用VS开发环境,书中讲解了如何在VS下学习本书内容和使用VS。但绝对不适合想学习数据库开发和windows应用开发,因为书中不涉及,看下图书中有说明。
评分实例经典查阅方便很实用性价比高
评分挺不错的 匟
评分讲的太粗,根本不知道为什么要这样做。感觉不值
评分2、独立于平台和处理器,.NET应用一经编写和创建,就可以在任何支持公共语言运行时(CLR)环境的平台上执行,所以应用软件开发者根本无须考虑硬件和支持.NET平台的操作系统的任何细节。
评分公司买的,一直都买这个品牌,便宜,够用
评分基础,挺好,不过要是有深一点的内容就更好了
本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有