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

圖1-1 Visual Studio 2010安裝向導界面
(2)單擊“安裝Microsoft Visual Studio 2010”鏈接,開始加載Visual Studio 2010安裝組件,如圖1-2所示。

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

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

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

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

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

圖1-7 Visual Studio 2010啟動界面
(2)在啟動界面中單擊“項目”,此時界面中會顯示名稱為“最近項目”、“新項目”、“打開解決方案”的圖標,對應的作用是顯示最近創建或使用過的項目、新建項目、打開解決方案,如圖1-8所示。

圖1-8 項目向導界面
(3)單擊“新項目”創建項目,如圖1-9所示。輸入項目名稱“1.1”,選擇項目保存位置,單擊“確定”按鈕,將創建名稱為“1.1”的解決方案,解決方案包含一個名稱為“1.1”的項目,如圖1-10所示。Visual Studio 2010將自動創建一個winform界面。

圖1-9 項目新建界面

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

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

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

圖1-13 創建控制臺應用程序
3.查看解決方案結構
創建完畢之后,Visual Studio 2010會自動在“解決方案瀏覽器”中顯示整個解決方案和項目的文件。在“解決方案瀏覽器”的文件結構中,可以看到已經創建好的一個Program.cs文件。在該文件中,可以編寫控制臺應用程序的主函數代碼。“解決方案瀏覽器”窗口如圖1-14所示。

圖1-14 控制臺應用程序的解決方案資源管理器
4.編寫Program程序代碼
雙擊Program.cs文件,打開該代碼文件,在Main()函數的程序代碼中輸出“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 字符輸出到控制臺 12 System.Console.ReadLine(); //讀取Enter鍵之后,關閉控制臺應用程序 13 } 14 } 15 }
1.4.4 生成和運行程序
生成主要是對解決方案或項目進行編譯的,要編譯項目可以在Visual Studio 2010環境中選擇菜單欄的“運行”→“運行Hellow Wold編譯完成后”命令,也可以在解決方案資源管理器中,用鼠標右鍵單擊“Hellow Wold”項目,在彈出的快捷菜單中選擇“運行”命令。如果生成沒有錯誤就可運行程序。運行程序可以按“F5”鍵,也可以單擊工具欄上的運行按鈕,執行結果如圖1-15所示。

圖1-15 控制臺應用程序的編譯執行結果
如果在程序的編譯過程中出現了語法錯誤,Visual Studio 2010會自動提示錯誤的原因。上一實例代碼中,如果把第一條“HelloWorld”輸出語句后的分號去掉,然后進行編譯,Visual Studio 2010會提示如圖1-16的錯誤。單擊“否”按鈕,Visual Studio 2010會在窗口顯示具體的錯誤提示信息,如圖1-17所示。

圖1-16 控制臺應用程序的編譯錯誤提示窗口

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

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

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

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

圖1-21 代碼高亮顯示
1.6 小結
本章主要介紹了微軟最新開發平臺Visual Studio 2010的相關知識,包括Visual Studio 2010的平臺簡介、Visual Studio 2010中的開發語言、應用程序類型等相關內容。隨后,介紹了如何使用Visual Studio 2010向導創建項目,在項目中書寫代碼、生成和運行項目等。最后,介紹了Visual Studio 2010中C#的新特性。
通過本章的學習,讀者可以簡單了解Visual Studio 2010的相關知識,以及如何通過Visual Studio 2010創建項目,在控制臺完成簡單C#程序開發。
1.7 練習
一、填空題
1.Visual Studio 2010中新增的開發語言是( )。
2.解決方案和項目的關系是解決方案( )項目。
3.Visual Studio 2010中運行項目應用程序的快捷鍵是( )。
4.被定義為dynamic類型的對象,使用了未經定義的方法,程序能通過( ),但運行時報錯。
5.Visual Studio 2010中,Framework的版本是( )。
二、簡答題
1.簡述Visual Studio 2010新功能。
2.簡述Visual Studio 2010新特性。
3.Visual Studio 2010包含哪些開發語言?
三、上機題
使用Visual Studio 2010創建一個C#控制臺項目,輸出“Hello boys and girs”。
- 自制編譯器
- PHP程序設計(慕課版)
- Vue.js 2 and Bootstrap 4 Web Development
- Visual Basic程序設計實驗指導(第4版)
- 基于Swift語言的iOS App 商業實戰教程
- 從0到1:Python數據分析
- Learning FuelPHP for Effective PHP Development
- JavaScript程序設計(第2版)
- Beginning C++ Game Programming
- Python自然語言理解:自然語言理解系統開發與應用實戰
- Simulation for Data Science with R
- Oracle 12c從入門到精通(視頻教學超值版)
- Java并發實現原理:JDK源碼剖析
- Python高性能編程(第2版)
- 深入理解MySQL主從原理