- 從零開始學(xué)C#
- 劉亮亮等編著
- 2500字
- 2018-12-27 12:54:31
第一篇Visual Studio 2010開發(fā)平臺(tái)
第1章Visual Studio 2010概述
Visual Studio是微軟公司推出的開發(fā)環(huán)境,也是目前最流行的Windows平臺(tái)應(yīng)用程序開發(fā)環(huán)境之一,目前最新的版本是Visual Studio 2010。Visual Studio 2010推動(dòng)云計(jì)算等新興技術(shù)趨勢,合理化應(yīng)用程序生命周期管理(ALM),支持統(tǒng)一建模語言(UML)和特定域語言(DSL),另外,Visual Studio 2010增加了C#的動(dòng)態(tài)編程、C++的全面支持、新的平臺(tái)語言F#等新功能特性。Visual Studio 2010能夠簡化整個(gè)開發(fā)過程,讓開發(fā)人員走向新的平臺(tái),提高開發(fā)人員的工作效率和熱情,創(chuàng)建高質(zhì)量和突破性的程序。
1.1 Visual Studio 2010平臺(tái)簡介
在.NET平臺(tái)上,Visual Studio一直獨(dú)領(lǐng)風(fēng)騷。由早期的Visual Studio 2002、到2003年推出的Visual Studio 2003、后來的Visual Studio 2005、Visual Studio 2008,以及現(xiàn)在最新的Visual Studio 2010,功能不斷完善和強(qiáng)大,程序開發(fā)更加高效快揵,.NET Framework也由1.0發(fā)展到現(xiàn)在的4.0,它為廣大開發(fā)人員提供了更加穩(wěn)健的、功能齊備的開發(fā)環(huán)境。Visual Studio 2010有許多令人期盼已久的強(qiáng)化功能,包括提供更高的程序開發(fā)效率、更精簡的程序代碼、更佳的安全性能。
1.1.1 Visual Studio 2010是什么
Visual Studio 2010是微軟公司推出的開發(fā)平臺(tái),它為各類開發(fā)人員提供合適的工具。
Visual Studio 2010在以下幾方面內(nèi)容進(jìn)行了改進(jìn)。
? 增強(qiáng)和完善了Visual Studio IDE;
? 改進(jìn)了Visual Basic和C#語言,開發(fā)人員可以根據(jù)自己的愛好選擇任意一種語言;
? 同時(shí)還包括一種新的.NET Framework語言即F#;
? 支持基于MVC的Web應(yīng)用,改進(jìn)了代碼編寫的速度,簡化了Web開發(fā);
? 改進(jìn)了對(duì)WPF和Silverlight應(yīng)用程序的開發(fā);
? 完善了Visual C++功能。
微軟宣稱Visual Studio 2010是開發(fā)者針對(duì)眾多的應(yīng)用程序進(jìn)行的開發(fā),諸如Windows 7、Office、Web、智能手機(jī)和云應(yīng)用框架等。微軟除了支持其基本平臺(tái)外,也準(zhǔn)備提供對(duì)新興應(yīng)用趨勢的工具支持,即云計(jì)算和并行設(shè)計(jì),以充分利用高性能的多核系統(tǒng)。例如:為并行編程提供了更多支持,包括增加調(diào)試窗口,增加對(duì)NET Framework PLINQ,本地Parallel Pattern Library和Concurrency Runtime并行擴(kuò)展編碼的支持。
Visual Studio 2010主要有以下新功能。
? C# 4.0中的動(dòng)態(tài)類型和動(dòng)態(tài)編程;
? 多顯示器支持;
? 使用Visual Studio 2010的特性支持TDD;
? 支持Office;
? Quick Search特性;
? C++ 0x新特性;
? 靈活高效的IDE;
? 使用Visual C++ 2010創(chuàng)建Ribbon界面;
? 新增基于.NET平臺(tái)的語言F#。
Visual Studio 2010和.NET Framework 4.0將在下面幾個(gè)方面有所創(chuàng)新。
1.靈活高效的全新IDE
在Visual Studio 2010中,微軟用全新的WPF技術(shù)重新打造了它的編輯器。借助WPF的強(qiáng)大功能,新的編輯器可以實(shí)現(xiàn)很多以前Visual Studio 2008的IDE根本無法想象的功能,比如代碼的無級(jí)縮放,變量的高亮顯示,可拆卸的代碼窗口,多窗口即時(shí)更新,跟蹤變化,代碼的自動(dòng)產(chǎn)生等。這些新的IDE特性都會(huì)極大地提高程序員的開發(fā)效率。
2.強(qiáng)化云計(jì)算能力
云計(jì)算概念在剛興起時(shí),微軟就宣布要進(jìn)軍云計(jì)算領(lǐng)域。因此,Visual Studio 2010為Windows Azure提供了強(qiáng)有力的支持。Windows Azure是由微軟開發(fā)的一套基于云計(jì)算的作業(yè)系統(tǒng),主要用來提供云端線上服務(wù)所需要的作業(yè)系統(tǒng)、基礎(chǔ)存儲(chǔ)和管理的平臺(tái)。雖然Azure平臺(tái)可以滿足大部分的云計(jì)算工作,但是它有一個(gè)缺陷,就是開發(fā)的周期比較長。因此,微軟在Visual Studio 2010中為Windows Azure提供了專門的項(xiàng)目模型。借助Visual Studio 2010這個(gè)有效的開發(fā)工具,可以大大地減少云計(jì)算系統(tǒng)的開發(fā)周期。另外,開發(fā)人員可以利用Visual Studio 2010將創(chuàng)建的服務(wù)打包,然后通過Windows Live Developer Portal部署到Windows Azure。
3.提高并行計(jì)算速度
在以往的計(jì)算機(jī)發(fā)展歷史中,每次硬件的升級(jí)都可帶來軟件性能的大幅提升。但是進(jìn)入多核時(shí)代后,這種便利性就沒有了。原因是當(dāng)前的應(yīng)用程序幾乎都是針對(duì)一個(gè)運(yùn)算核心而設(shè)計(jì)的,由于受到其架構(gòu)的影響,軟件并不能充分地利用多核所帶來的性能提升,甚至有時(shí)性能還會(huì)有所下降。在這種情況下,開發(fā)者不得不改變應(yīng)用程序的架構(gòu)和開發(fā)方法,以應(yīng)對(duì)多核的趨勢,使得自己的軟件可以充分利用硬件升級(jí)所帶來的性能提升。
Visual Studio 2010加大了對(duì)并行運(yùn)算的支持。例如,Visual Studio 2010的調(diào)試器會(huì)知道代碼的并行特性,并且能夠在調(diào)試程序的不同執(zhí)行單元時(shí)顯示應(yīng)用程序的狀態(tài)。另外,Visual Studio 2010還提供了一個(gè)并行性能分析器,它可以幫助分析應(yīng)用程序的性能瓶頸,找到需要并行處理和可以進(jìn)行并行處理的地方,并以圖形化的形式表現(xiàn)出來。這樣,通過Visual Studio 2010并行性能分析器的使用,開發(fā)人員就可以輕松地實(shí)現(xiàn)應(yīng)用程序的并行化。這是非常有前瞻性的一個(gè)功能,也是協(xié)助應(yīng)用程序步入多核計(jì)算趨勢的關(guān)鍵一步。
4.C++王者歸來
自從Visual Studio 6以后,Visual Studio中的C++再?zèng)]有多大的變化,Visual Studio 2008也只是對(duì)C++進(jìn)行一些細(xì)小的改善。但Visual Studio 2010在C++開發(fā)方面有了很多革命性的變化。首先,對(duì)C++新標(biāo)準(zhǔn)C++0x的全面支持,不會(huì)再像Visual C++ 6一樣對(duì)C++標(biāo)準(zhǔn)支持不佳。其次,微軟將Visual C++的構(gòu)建系統(tǒng)VCBuild整合到了MSBuild中,借助后臺(tái)編譯,Visual C++的IntelliSense更加智能,能夠處理更多的文件、更加復(fù)雜的項(xiàng)目。另外在MFC方面,通過引入很多新的類,MFC開始全面支持Vista、Windows 7風(fēng)格的UI。
5.面向Windows 7
Visual Studio 2010提供了很多工具來幫助開發(fā)者開發(fā)基于Windows 7的應(yīng)用程序,同時(shí)使那些已經(jīng)存在的非托管應(yīng)用程序,通過一定的處理也同樣能夠具有新的操作系統(tǒng)所帶來的特性。在Visual Studio 2010中,微軟花了很大的力氣使得非托管C++代碼的開發(fā)更加容易和高效。例如,升級(jí)MFC的庫和頭文件以全面支持Windows 7的界面元素,包括Ribbon界面,搜索功能甚至多點(diǎn)觸摸特性的支持。
1.1.2 開發(fā)語言
Visual Studio 2010提供多種語言,下面具體介紹。
1.VB.NET
VB.NET提供了一種簡單快捷的方法來創(chuàng)建基于.NET Framework的Windows、Web和移動(dòng)設(shè)備應(yīng)用程序,它的構(gòu)建基礎(chǔ)與VB 6.0有很大不同。與所有面向.NET Framework的程序一樣,使用VB.NET編寫的程序都具有安全性和語言互操作性方面的優(yōu)點(diǎn)。
2.Visual J#
Visual J#使Java開發(fā)人員可以使用所選語言對(duì).NET平臺(tái)進(jìn)行編程。編程人員利用Visual J#.NET可創(chuàng)建基于.NET的健壯的應(yīng)用程序,這些應(yīng)用程序可以無縫地與用任何其他.NET平臺(tái)支持的語言編寫的.NET應(yīng)用程序進(jìn)行交互操作。有了Visual J#.NET,Java開發(fā)人員可利用.NET框架的豐富工具(ADO.NET、ASP.NET和許多其他工具),這些工具的功能和簡單性超過了Java開發(fā)工具包(JDK)規(guī)范中的功能。
3.Visual C++
Visual C++是一種功能強(qiáng)大的語言,用于在生成本機(jī)Windows(COM+)應(yīng)用程序或.NET Framework托管Windows應(yīng)用程序時(shí)進(jìn)行深入細(xì)微的控制。Visual Studio 2010在C++開發(fā)方面有了很多革命性的變化,對(duì)C++新標(biāo)準(zhǔn)C++0x全面支持。
4.Visual C#
Visual C#具有簡單、功能強(qiáng)大、類型安全和面向?qū)ο蟮忍攸c(diǎn)。Visual C#憑借它的許多創(chuàng)新,在保持C樣式語言的表示形式和優(yōu)美特征的同時(shí),可實(shí)現(xiàn)應(yīng)用程序快速開發(fā)。在Visual Studio 2010中,對(duì)Visual C#增加了很多新功能,如動(dòng)態(tài)支持(Dynamic Support)、Office編程能力、類型等價(jià)支持、協(xié)變與逆變等,這些新特性與新功能可有效改善Microsoft Office的編程能力和代碼研究能力,并對(duì)測試驅(qū)動(dòng)開發(fā)提供支持。
5.Visual F#
Visual F#是Visual Studio 2010中新增的全新.NET編程語言,結(jié)合了函數(shù)和面向?qū)ο缶幊蹋容^適合于并行、算法、探索性和技術(shù)性編程任務(wù),在金融行業(yè)有獨(dú)特的優(yōu)勢。Visual F#可用于開發(fā)應(yīng)用程序或用F#碼為其他.NET應(yīng)用程序做必要的擴(kuò)充。F#是.NET編程語言家族中第一個(gè)基于Ocaml并十分類似于它的函數(shù)語言,這是一種用于顯示.NET在不同編程語言間互通的程序設(shè)計(jì)。
Tips
F#語言集安全、性能、腳本與Modern Runtime系統(tǒng)(Java虛擬機(jī)和微軟通用Runtime)等多種優(yōu)勢于一體,并支持Python等交互式腳本語言、強(qiáng)類型推理、ML的安全性。另外,F(xiàn)#語言可以訪問Access.NET庫及其他數(shù)據(jù)庫工具軟件。
1.2 下載和安裝工具(New Profiles(新外形))
Visual Studio 2010可以在微軟官方網(wǎng)站下載,也可以在互聯(lián)網(wǎng)搜索進(jìn)行下載。安裝Visual Studio 2010過程比較簡單,只要操作系統(tǒng)符合Visual Studio 2010的安裝條件即可進(jìn)行逐步安裝。
(1)安裝時(shí)在Visual Studio 2010的安裝光盤中或在下載的安裝鏡像文件中,找到“安裝”可執(zhí)行文件,雙擊該文件之后,程序彈出安裝程序向?qū)Ы缑嫒鐖D1-1所示。

圖1-1 Visual Studio 2010安裝向?qū)Ы缑?/p>
(2)單擊“安裝Microsoft Visual Studio 2010”鏈接,開始加載Visual Studio 2010安裝組件,如圖1-2所示。

圖1-2 加載Visual Studio 2010安裝組件
(3)安裝組件加載完之后,單擊“下一步”按鈕,彈出協(xié)議界面,選擇“我已閱讀并接受許可條款”單選按鈕,如圖1-3所示。

圖1-3 Visual Studio 2010協(xié)議
(4)單擊“下一步”按鈕之后,彈出界面如圖1-4所示。

圖1-4 Visual Studio 2010安裝選項(xiàng)
(5)單擊“安裝”按鈕之后,開始安裝,如圖1-5所示。

圖1-5 Visual Studio 2010安裝
(6)安裝過程中需要重啟計(jì)算機(jī),直到安裝結(jié)束,整個(gè)過程不再需要用戶操作。安裝完成后會(huì)彈出“安裝成功”提示,如圖1-6所示。

圖1-6 Visual Studio 2010安裝完成
1.3 應(yīng)用程序類型
Visual Studio 2010提供了統(tǒng)一的.NET開發(fā)平臺(tái),它可以創(chuàng)建多種類型的項(xiàng)目,同時(shí)與.NET Framework自動(dòng)集成,方便開發(fā)人員的集成編譯和項(xiàng)目的建立。使用Visual Studio 2010可以創(chuàng)建以下幾種類型的應(yīng)用程序。
1.Windows應(yīng)用程序
在.NET Framework上創(chuàng)建Windows應(yīng)用程序,可以使用任何編程語言來編寫。例如,利用Visual Studio 2010創(chuàng)建窗體應(yīng)用程序、類庫、Windows服務(wù)、控制臺(tái)應(yīng)用程序和WPF應(yīng)用程序等。
2.Web應(yīng)用程序
Visual Studio 2010可以直接創(chuàng)建網(wǎng)站類型的應(yīng)用程序,可以使用任何編程語言來編寫。例如,用Visual Studio 2010可以創(chuàng)建ASP.NET Web應(yīng)用程序、Web控件庫和ASP.NET AJAX服務(wù)器控件等。
3.Office應(yīng)用程序
Visual Studio 2010對(duì)Office的編程能力進(jìn)行了擴(kuò)充和增強(qiáng)。Visual Studio Tools for Office包括新的Visual Studio項(xiàng)目,用于創(chuàng)建Word文檔、Word模板、Excel工作簿和Excel模板的后臺(tái)代碼,應(yīng)用程序級(jí)外接程序及SharePoint工作流模板。通過該應(yīng)用類型的創(chuàng)建,可以實(shí)現(xiàn)基于Office產(chǎn)品的應(yīng)用開發(fā)。
4.智能設(shè)備應(yīng)用程序
Visual Studio 2010集成環(huán)境包括用于Windows CE的移動(dòng)設(shè)備(例如,Pocket PC或Smartphone)的工具。通過創(chuàng)建該類型的應(yīng)用程序,可以實(shí)現(xiàn)在移動(dòng)的智能客戶端應(yīng)用的開發(fā)。
5.擴(kuò)展性應(yīng)用程序
用于實(shí)現(xiàn)自動(dòng)化或向IDE添加功能的應(yīng)用程序類型,例如,外接程序或向?qū)В梢允褂萌魏尉幊陶Z言來編寫。
1.4 創(chuàng)建一個(gè)Visual Studio 2010項(xiàng)目
項(xiàng)目是Visual Studio中經(jīng)常用到的一個(gè)概念,創(chuàng)建項(xiàng)目也就是創(chuàng)建工程(Project)。項(xiàng)目是一組要編譯到程序集,在某些情況下是單個(gè)模塊中的源文件和資源。例如,項(xiàng)目可以是開發(fā)的應(yīng)用程序,項(xiàng)目也可以是類庫。在Visual Studio 2010創(chuàng)建項(xiàng)目時(shí),Visual Studio 2010首先會(huì)創(chuàng)建與項(xiàng)目名稱相同的解決方案,然后在此解決方案下創(chuàng)建項(xiàng)目。
1.4.1 運(yùn)行新項(xiàng)目向?qū)?/h4>
Visual Studio 2010安裝之后,讀者一定想知道如何創(chuàng)建一個(gè)項(xiàng)目。本節(jié)講解如何使用向?qū)韯?chuàng)建一名稱為“1.1”的項(xiàng)目。
本節(jié)將使用向?qū)韯?chuàng)建一名稱為“1.1”的項(xiàng)目。
(1)首先啟動(dòng)Visual Studio 2010,選擇“開始”→“程序”→“Microsoft Visual Studio 2010”→“Microsoft Visual Studio 2010”命令,啟動(dòng)之后的界面如圖1-7所示。

圖1-7 Visual Studio 2010啟動(dòng)界面
(2)在啟動(dòng)界面中單擊“項(xiàng)目”,此時(shí)界面中會(huì)顯示名稱為“最近項(xiàng)目”、“新項(xiàng)目”、“打開解決方案”的圖標(biāo),對(duì)應(yīng)的作用是顯示最近創(chuàng)建或使用過的項(xiàng)目、新建項(xiàng)目、打開解決方案,如圖1-8所示。

圖1-8 項(xiàng)目向?qū)Ы缑?/p>
(3)單擊“新項(xiàng)目”創(chuàng)建項(xiàng)目,如圖1-9所示。輸入項(xiàng)目名稱“1.1”,選擇項(xiàng)目保存位置,單擊“確定”按鈕,將創(chuàng)建名稱為“1.1”的解決方案,解決方案包含一個(gè)名稱為“1.1”的項(xiàng)目,如圖1-10所示。Visual Studio 2010將自動(dòng)創(chuàng)建一個(gè)winform界面。

圖1-9 項(xiàng)目新建界面

圖1-10 項(xiàng)目主窗口
1.4.2 理解解決方案和項(xiàng)目
在Visual Studio中,解決方案是構(gòu)成某個(gè)應(yīng)用程序的所有項(xiàng)目集,也就是說解決方案包含項(xiàng)目,一個(gè)解決方案可以包含一個(gè)或多個(gè)項(xiàng)目。形象地說,解決方案就是一個(gè)容器,在這個(gè)容器里,分成好多層,好多格,用來存放不同的項(xiàng)目。一個(gè)解決方案與項(xiàng)目是大于等于的關(guān)系。建立解決方案后,會(huì)建立一個(gè)擴(kuò)展名為.sln的文件。
項(xiàng)目是一組要編譯到程序集(在某些情況下是單個(gè)模塊)中的源文件和資源。例如,項(xiàng)目可以是開發(fā)的應(yīng)用程序,也可以是類庫。在.NET下,一個(gè)項(xiàng)目可以表現(xiàn)為多種類型,如控制臺(tái)應(yīng)用程序、Windows應(yīng)用程序、類庫(Class Library)、Web應(yīng)用程序、Web Service、Windows控件等。如果經(jīng)過編譯,從擴(kuò)展名來看,應(yīng)用程序都會(huì)被編譯為.exe文件,而其余的會(huì)被編譯為.dll文件。
在1.4.1節(jié)中講解了用項(xiàng)目向?qū)?chuàng)建名稱為“1.1”的項(xiàng)目,創(chuàng)建項(xiàng)目時(shí),Visual Studio同時(shí)創(chuàng)建名稱為“1.1”的解決方案,如圖1-11所示。現(xiàn)在給“1.1”解決方案添加一個(gè)新項(xiàng)目“1.2”,解決方案窗口中,用鼠標(biāo)右鍵單擊“解決方案管理器1.1”→“添加”→“新項(xiàng)目”命令,會(huì)彈出如圖1-9所示的“新建項(xiàng)目”窗口,“名稱”文本框中輸入項(xiàng)名稱 “1.2”。此時(shí)“1.1”解決方案包含名稱為“1.1”和“1.2”的兩個(gè)項(xiàng)目,如圖1-12所示。

圖1-11 解決方案資源管理器

圖1-12 1.1解決方案
當(dāng)一個(gè)系統(tǒng)有很多的子系統(tǒng)功能時(shí),可以使用一個(gè)項(xiàng)目來實(shí)現(xiàn)一子系統(tǒng),用解決方案把所有的項(xiàng)目包含在內(nèi),實(shí)現(xiàn)所有的功能。
1.4.3 使用Visual Studio 2010編寫代碼
介紹了使用Visual Studio 2010向?qū)?chuàng)建項(xiàng)目之后,讀者一定想了解如何實(shí)現(xiàn)一個(gè)應(yīng)用程序的編寫。本節(jié)將通過一個(gè)控制臺(tái)的項(xiàng)目實(shí)例,向讀者介紹如何編寫一個(gè)簡單的C#控制臺(tái)程序。
本實(shí)例為控制臺(tái)程序類型,控制臺(tái)程序的程序入口點(diǎn)位于Main函數(shù)中,即所有的代碼都是通過該函數(shù)作為入口,再將其運(yùn)行。所以需要在Main函數(shù)中編寫實(shí)現(xiàn)程序的代碼。首先啟動(dòng)Visual Studio 2010,選擇“開始”→“程序”→“Microsoft Visual Studio 2010”→“Microsoft Visual Studio 2010”命令,如圖1-7所示。創(chuàng)建控制臺(tái)應(yīng)用程序操作步驟如下。
1.新建項(xiàng)目
在菜單欄中選擇“文件”→“項(xiàng)目”命令,當(dāng)然也可使用1.4.1節(jié)所講的項(xiàng)目向?qū)?chuàng)建項(xiàng)目。
2.選擇項(xiàng)目類型
新建項(xiàng)目的過程如下。
(1)在彈出的“新建項(xiàng)目”對(duì)話框的“已安裝的模板”區(qū)域中選擇“Windows”選項(xiàng),然后在窗口右側(cè)的“模板”區(qū)域中選擇“控制臺(tái)應(yīng)用程序”選項(xiàng)。
(2)在對(duì)話框下方的“名稱”文本框中填寫項(xiàng)目的名稱,本實(shí)例為HelloWorld。在“位置”文本框后,單擊“瀏覽”按鈕,選擇需要保存該項(xiàng)目的路徑。
(3)選中“為解決方案創(chuàng)建目錄”復(fù)選框。所有項(xiàng)目信息填寫完畢之后,單擊“確定”按鈕,如圖1-13所示。

圖1-13 創(chuàng)建控制臺(tái)應(yīng)用程序
3.查看解決方案結(jié)構(gòu)
創(chuàng)建完畢之后,Visual Studio 2010會(huì)自動(dòng)在“解決方案瀏覽器”中顯示整個(gè)解決方案和項(xiàng)目的文件。在“解決方案瀏覽器”的文件結(jié)構(gòu)中,可以看到已經(jīng)創(chuàng)建好的一個(gè)Program.cs文件。在該文件中,可以編寫控制臺(tái)應(yīng)用程序的主函數(shù)代碼。“解決方案瀏覽器”窗口如圖1-14所示。

圖1-14 控制臺(tái)應(yīng)用程序的解決方案資源管理器
4.編寫Program程序代碼
雙擊Program.cs文件,打開該代碼文件,在Main()函數(shù)的程序代碼中輸出“HelloWorld”字符串,Program.cs文件代碼如下。
01 using System; 02 using System.Collections.Generic; 03 using System.Text; 04 05 namespace Hello_World 06 { 07 class Program 08 { 09 static void Main(string[] args) 10 { 11 System.Console.WriteLine("Hello World!");//將Hello World 字符輸出到控制臺(tái) 12 System.Console.ReadLine(); //讀取Enter鍵之后,關(guān)閉控制臺(tái)應(yīng)用程序 13 } 14 } 15 }
1.4.4 生成和運(yùn)行程序
生成主要是對(duì)解決方案或項(xiàng)目進(jìn)行編譯的,要編譯項(xiàng)目可以在Visual Studio 2010環(huán)境中選擇菜單欄的“運(yùn)行”→“運(yùn)行Hellow Wold編譯完成后”命令,也可以在解決方案資源管理器中,用鼠標(biāo)右鍵單擊“Hellow Wold”項(xiàng)目,在彈出的快捷菜單中選擇“運(yùn)行”命令。如果生成沒有錯(cuò)誤就可運(yùn)行程序。運(yùn)行程序可以按“F5”鍵,也可以單擊工具欄上的運(yùn)行按鈕,執(zhí)行結(jié)果如圖1-15所示。

圖1-15 控制臺(tái)應(yīng)用程序的編譯執(zhí)行結(jié)果
如果在程序的編譯過程中出現(xiàn)了語法錯(cuò)誤,Visual Studio 2010會(huì)自動(dòng)提示錯(cuò)誤的原因。上一實(shí)例代碼中,如果把第一條“HelloWorld”輸出語句后的分號(hào)去掉,然后進(jìn)行編譯,Visual Studio 2010會(huì)提示如圖1-16的錯(cuò)誤。單擊“否”按鈕,Visual Studio 2010會(huì)在窗口顯示具體的錯(cuò)誤提示信息,如圖1-17所示。

圖1-16 控制臺(tái)應(yīng)用程序的編譯錯(cuò)誤提示窗口

圖1-17 錯(cuò)誤提示信息
1.4.5 設(shè)置編譯器選項(xiàng)
編譯器選項(xiàng)主要是項(xiàng)目在生成、編譯、調(diào)試和連接時(shí)的屬性設(shè)置。如果要設(shè)置編譯器選項(xiàng),在如圖1-11所示的解決方案資源管理器中選擇要編譯的項(xiàng)目名稱,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“屬性”命令,就會(huì)彈出如圖1-18所示的Visual Studio 2010的項(xiàng)目屬性設(shè)置對(duì)話框。

圖1-18 設(shè)置編譯器選項(xiàng)對(duì)話框
選擇“應(yīng)用程序”選項(xiàng)卡可以設(shè)置程序集名稱、命名空間名稱、輸出類型和Framwork版本。選擇“運(yùn)行”選項(xiàng)卡可以設(shè)置編譯模式、平臺(tái)、警告等級(jí)、輸出路徑等。選擇“錯(cuò)誤”選項(xiàng)卡可以設(shè)置編譯模式、平臺(tái)、啟動(dòng)操作、啟動(dòng)選項(xiàng)、啟用調(diào)試器等。
1.5 C# 4.0中的新特性
在本節(jié)中將介紹C# 4.0中的新特性——dynamic類型、命名和可選參數(shù)、類型等價(jià)支持、協(xié)變和逆變等。
1.5.1 Visual C# 4.0 dynamic類型
隨著Visual Studio 2010的發(fā)布,C#的版本也升級(jí)到了4.0。C# 4.0的主題就是動(dòng)態(tài)編程,雖然C#仍然是一種靜態(tài)語言,但是其對(duì)象的意義開始變得越來越“動(dòng)態(tài)”。在Visual C# 4.0中引入了一種新的dynamic類型,該類型是一個(gè)靜態(tài)的(static)類型,但是一個(gè)dynamic類型的對(duì)象會(huì)繞過靜態(tài)類型檢查。在大多數(shù)情況下dynamic和object類型有些相似,但是在編譯時(shí),dynamic類型被假定為支持任何操作,也就是說dynamic類型的對(duì)象可以是一個(gè)COM對(duì)象,也可以是一個(gè)DOM對(duì)象或者Office對(duì)象,而如果在運(yùn)行時(shí)發(fā)現(xiàn)該對(duì)象不是期望的對(duì)象則會(huì)拋出一個(gè)運(yùn)行時(shí)異常。
因?yàn)榘岩粋€(gè)對(duì)象定義為dynamic類型,所以在代碼中編寫的任意調(diào)用在編譯時(shí)都是合法的(這一點(diǎn)在聲明為object類型時(shí)不能成立)。例如,在控制臺(tái)項(xiàng)目中輸入以下代碼,使用1.4.4節(jié)生成程序方法編譯此程序,編譯結(jié)果顯示Build Succeeded,表明代碼通過編譯。
01 class Program 02 { 03 static void Main(string[] args) 04 { 05 dynamic obj ="hello word";//聲明dynamic類型對(duì)象obj,并賦值 06 obj.Configuration(); 07 Console.ReadLine(); 08 } 09 }
【代碼解析】第5行聲明dynamic類型對(duì)象obj,并賦值。
但是按“F5”鍵運(yùn)行后發(fā)現(xiàn)obj并不支持Configuration方法,因此會(huì)拋出異常,如圖1-19所示。

圖1-19 動(dòng)態(tài)類型拋出異常
通過這個(gè)例子可以說明,C#編譯器允許開發(fā)人員通過dynamic對(duì)象調(diào)用任何方法,即使這個(gè)方法根本不存在,編譯器也不會(huì)在編譯的時(shí)候報(bào)編譯錯(cuò)誤。只有在運(yùn)行的時(shí)候,它才會(huì)檢查這個(gè)對(duì)象的實(shí)際類型。動(dòng)態(tài)類型將使得C#可以以更加統(tǒng)一而便利的形式范圍檢查下列對(duì)象:
? 來自動(dòng)態(tài)編程語言,如Python或Ruby的對(duì)象;
? 通過IDispatch訪問的COM對(duì)象;
? 通過反射訪問的一般.NET類型;
? 結(jié)構(gòu)發(fā)生過變化的對(duì)象,如HTML DOM對(duì)象。
當(dāng)開發(fā)人員得到一個(gè)動(dòng)態(tài)類型的對(duì)象時(shí),不管它是來自COM、IronPython、HTML DOM,還是反射,只需要對(duì)其進(jìn)行操作即可,動(dòng)態(tài)語言運(yùn)行時(shí)(DLR)會(huì)幫助開發(fā)人員指出針對(duì)特定的對(duì)象,這些操作的具體意義。這將給開發(fā)人員的開發(fā)帶來極大的靈活性,并且能夠極大程度地精簡代碼。
1.5.2 Visual C# 4.0命名和可選參數(shù)
Visual C# 4.0引入了命名和可選參數(shù),命名參數(shù)和可選參數(shù)與SQL Server中的存儲(chǔ)過程的參數(shù)十分相似。命名參數(shù)允許調(diào)用者通過提供參數(shù)的名稱來為其賦值,這樣參數(shù)的位置就不再重要了。可選參數(shù)允許在定義時(shí)為某些參數(shù)賦值,在調(diào)用時(shí)可以忽略這些“可選的”參數(shù)。命名參數(shù)和可選參數(shù)可以應(yīng)用在方法、索引器、構(gòu)造函數(shù)和委托中。命名參數(shù)和可選參數(shù)與dynamic類型結(jié)合在一起使用,可以方便地訪問如Office自動(dòng)化API之類的COM API。
1.命名參數(shù)
命名參數(shù)的語法為:
參數(shù)名稱1:參數(shù)值1,參數(shù)名稱2:參數(shù)值2…
下面使用一個(gè)函數(shù)調(diào)用來說明命名參數(shù)。
01 static void Main(string[] args) 02 { 03 Check_User(pwd:"123456",username:"張三"); 04 } 05 06 static void Check_User(string username, string pwd) 07 { Console.WriteLine("username:{0},pwd:{1}", username, pwd);//輸出 08 }
通過以上程序可以看到由于在調(diào)用函數(shù)Check_User時(shí)使用了命名參數(shù),參數(shù)的位置可以根據(jù)需要變更,而在以前版本中參數(shù)的位置必須和函數(shù)定義時(shí)的位置一致。
2.可選參數(shù)
方法、構(gòu)造函數(shù)、索引器和委托的定義可以指定其參數(shù)為必選的還是可選的,在調(diào)用時(shí)必須提供必選參數(shù),但是可以省略可選參數(shù)。還可以使用System.Runtime. InteropServices.Optional Attribute特性類定義可選參數(shù),該類從1.0時(shí)代就已經(jīng)包含在基類庫中了。每一個(gè)可選參數(shù)的定義都包含默認(rèn)值(默認(rèn)值必須是常量),如果在調(diào)用時(shí)沒有指定該參數(shù),則使用默認(rèn)值。下面是可選參數(shù)的例子。
01 static void Main(string[] args) 02 { 03 Check_User("張三","123456","管理員"); 04 } 05 06 /// <summary> 07 /// 檢查用戶 08 /// </summary> 09 /// <param name="username">用戶名稱</param> 10 /// <param name="pwd">用戶密碼</param> 11 /// <param name="power">用戶權(quán)限</param> 12 /// <param name="zt">用戶狀態(tài)</param> 13 static void CreateUser(string username, string pwd, 14 string power="0",bool zt=false) 15 { 16 Console.WriteLine("username:{0},pwd:{1}", username, pwd); 17 }
在所有必需參數(shù)后面定義可選參數(shù),如果在調(diào)用時(shí)提供了某個(gè)可選參數(shù)的值,那么必須提供該可選參數(shù)之前所有可選參數(shù)的值(如果此參數(shù)之前有可選參數(shù)),而不允許使用逗號(hào)分隔的形式提供參數(shù)。
1.5.3 Visual C# 4.0類型等價(jià)支持
開發(fā)人員可以部署一個(gè)應(yīng)用程序,使之嵌入類型信息,而不是從PIA(主互操作程序集)中導(dǎo)入類型信息。借助于內(nèi)嵌的類型信息,應(yīng)用程序可以在運(yùn)行時(shí)使用某種數(shù)據(jù)類型而無須要求使用對(duì)運(yùn)行時(shí)程序集的引用。如果發(fā)布了運(yùn)行時(shí)程序集的各種版本的話,那么,包含嵌入式類型信息的應(yīng)用程序就可以直接使用各種版本的程序集工作,而不必重新進(jìn)行編譯。類型等價(jià)支持的使用,方便了COM API的訪問。
類型嵌入經(jīng)常用于COM交互,例如,使用Microsoft Office中的自動(dòng)化的應(yīng)用程序。嵌入類型信息允許同一個(gè)應(yīng)用程序在安裝了不同的Office版本的機(jī)器上運(yùn)行,而且開發(fā)人員可以在完全托管解決方案中使用類型嵌入。嵌入的類型需要滿足以下條件:
? 該程序集至少提供一個(gè)公共接口;
? 該嵌入接口使用ComImport和Guid特性聲明;
? 該程序集使用ImportedFromTypeLib和一個(gè)程序集級(jí)別的Guid特性標(biāo)注(默認(rèn)情況下Visual C#模版已包含了程序集的Guid特性)。
1.5.4 C# 4.0協(xié)變和逆變
Visual C# 4.0引入了協(xié)變和逆變的概念,協(xié)變功能能夠支持用戶使用比泛型參數(shù)更具體的類型,而逆變(contravariance)有助于使用更一般的類型。協(xié)變和逆變新概念的引入可以使實(shí)現(xiàn)變體接口的類進(jìn)行隱式轉(zhuǎn)換,從而為使用變體委托類型的方法簽名匹配提供更多的靈活性。用戶可以使用in和out關(guān)鍵字來建立變體類型的接口和委托。新的.NET框架還針對(duì)幾種現(xiàn)有的泛型接口和委托引進(jìn)了變體支持。
Visual C# 4.0中新提供了協(xié)變和逆變的新特性,一個(gè)泛型接口或委托的泛型參數(shù)被聲明為協(xié)變或逆變時(shí)該接口或委托稱為變體,這為解決類似于開篇中的兩類問題帶來了便利。.NET Framework 4.0中已為現(xiàn)有的一些接口和委托增加了變體支持,并且開發(fā)人員可以使用in和out關(guān)鍵字定義自己的變體接口和委托,但在定義時(shí)需要遵守相應(yīng)的規(guī)則。
1.5.5 Office編程
Visual Studio .NET前幾個(gè)版本也可以對(duì)Office進(jìn)行編程操作,但是由于參數(shù)太多,類型轉(zhuǎn)換復(fù)雜而煩瑣,使開發(fā)人員對(duì)Office編程操作感到頭痛。Visual Studio 2010中Visual C# 4.0新增加了命名和可選參數(shù)、動(dòng)態(tài)類型、索引屬性及可選的ref修飾符,這使得在訪問COM接口(包括Office自動(dòng)化相關(guān)API)方面更加方便快揵,開發(fā)Office程序更加高效。
1.5.6 多層顯示(MultiMonitor)
Visual Studio 2010提供了能將IDE的窗體移動(dòng)到Visual Studio IDE之外的功能,將它放至到桌面上或另一個(gè)顯示器中顯示。如果關(guān)閉Visual Studio,并再次打開它,會(huì)發(fā)現(xiàn)所有的窗體出現(xiàn)在最后一次放置的地方,如圖1-20所示。

圖1-20 Visual Studio 2010多層顯示
1.5.7 代碼高亮突出顯示
在代碼中選中一個(gè)變量時(shí),這個(gè)變量的所有其他實(shí)例就會(huì)突出顯示。這樣能加速尋找變量的過程,同時(shí)也能提高代碼的可讀性,如圖1-21所示。

圖1-21 代碼高亮顯示
1.6 小結(jié)
本章主要介紹了微軟最新開發(fā)平臺(tái)Visual Studio 2010的相關(guān)知識(shí),包括Visual Studio 2010的平臺(tái)簡介、Visual Studio 2010中的開發(fā)語言、應(yīng)用程序類型等相關(guān)內(nèi)容。隨后,介紹了如何使用Visual Studio 2010向?qū)?chuàng)建項(xiàng)目,在項(xiàng)目中書寫代碼、生成和運(yùn)行項(xiàng)目等。最后,介紹了Visual Studio 2010中C#的新特性。
通過本章的學(xué)習(xí),讀者可以簡單了解Visual Studio 2010的相關(guān)知識(shí),以及如何通過Visual Studio 2010創(chuàng)建項(xiàng)目,在控制臺(tái)完成簡單C#程序開發(fā)。
1.7 練習(xí)
一、填空題
1.Visual Studio 2010中新增的開發(fā)語言是( )。
2.解決方案和項(xiàng)目的關(guān)系是解決方案( )項(xiàng)目。
3.Visual Studio 2010中運(yùn)行項(xiàng)目應(yīng)用程序的快捷鍵是( )。
4.被定義為dynamic類型的對(duì)象,使用了未經(jīng)定義的方法,程序能通過( ),但運(yùn)行時(shí)報(bào)錯(cuò)。
5.Visual Studio 2010中,F(xiàn)ramework的版本是( )。
二、簡答題
1.簡述Visual Studio 2010新功能。
2.簡述Visual Studio 2010新特性。
3.Visual Studio 2010包含哪些開發(fā)語言?
三、上機(jī)題
使用Visual Studio 2010創(chuàng)建一個(gè)C#控制臺(tái)項(xiàng)目,輸出“Hello boys and girs”。
- Getting Started with React
- Mastering phpMyAdmin 3.4 for Effective MySQL Management
- 區(qū)塊鏈:以太坊DApp開發(fā)實(shí)戰(zhàn)
- 深入淺出Android Jetpack
- SSM輕量級(jí)框架應(yīng)用實(shí)戰(zhàn)
- 編程數(shù)學(xué)
- 深度學(xué)習(xí):Java語言實(shí)現(xiàn)
- Python High Performance Programming
- Mobile Device Exploitation Cookbook
- Go語言精進(jìn)之路:從新手到高手的編程思想、方法和技巧(2)
- 軟件測試綜合技術(shù)
- 區(qū)塊鏈國產(chǎn)化實(shí)踐指南:基于Fabric 2.0
- QPanda量子計(jì)算編程
- SFML Game Development
- Beginning PHP