C#入門到精通系列課程——第1章軟件開發及C#簡介


◆本章內容

(1)了解軟件

(2)軟件開發相關概念

(3)認識.NET Framework

(4)C#語言

(5)Visual Studio 2017

◆本章簡述

軟件在現代人們的日常生活中隨處可見,比如,大家使用的Windows操作系統、智能手機中的各種應用等都是軟件,那么,這些軟件是如何生成的呢?我們能不能開發自己的軟件呢?答案是肯定的。C#是微軟公司推出的一種語法簡潔、類型安全的面向對象的編程語言,使用C#就可以開發各種軟件,而Visual Studio 2019是目前開發C#程序最新的工具。本章將帶領大家了解C#語言及其使用的集成開發環境(IDE)——Visual Studio 2017。

“千里之行,始於足下!”趕快開始你的C#編程之旅吧!

1.1  了解軟件

隨着計算機的普及,計算機中的軟件對人們的日常生活和工作顯得越來越重要。例如,大家在聊天時常用的QQ軟件(如圖1.1所示);在工作中,使用的Office辦公軟件(如圖1.2所示);在觀看視頻時使用的騰訊視頻等視頻播放軟件(如圖1.3所示)等等。

 

 

 

 

以上是常用的一些軟件, 那么,到底什么是軟件呢?

軟件其實是一種計算機程序,而計算機程序是指為了得到某種結果,由計算機等具有信息處理能力的硬件裝置執行的代碼化指令集合。

計算機程序告訴計算機如何完成一個具體的任務,由於現在的計算機還不能理解人類的自然語言,所以不能用自然語言編寫計算機程序,這時就需要借助計算機語言( 即程序設計語言),它是人與計算機交流信息的工具,可以通過計算機語言指揮計算機如何工作。

一個軟件的生成過程為:程序員先將由計算機語言組成的代碼輸入到計算機中,然后計算機對代碼進行解釋編譯,最后由計算機生成軟件,如圖1.4所示。

 

 

 

1.2  軟件開發相關的概念

通常計算機程序中涉及的概念都比較抽象、專業。本節將對與軟件開發相關的常用概念進行介紹。

1.2.1  算法

算法是指對計算機工作步驟和方法的描述,算法的每個步驟都是嚴格規定好的,使其能夠被計算機識別並正確執行,並且每一個步驟都能夠被計算機理解為一個或者一組唯一的動作,而不會使計算機產生歧義。算法必須有開始和結束,並且必須保證算法規定的每一個步驟最終都能夠被完成。

下面通過一個例子來說明算法。例如,要交換變量a與變量b的值,計算機本身不能直接執行這個操作,那么就可以通過交換變量值的方法進行計算。交換兩個變量值的通用方法主要是借用第三方變量作為臨時變量。

具體算法描述如下:

(1)將變量a的內容賦值給臨時變量c。

(2)將變量b的內容賦值給變量a。

(3)將臨時變量c存放的內容賦值給變量b。

最終算法可以寫成:

(1)c←a。

(2)a←b

(3)b←C。

綜上所述,算法實際上就是用自然語言描述的一個計算機程序,編寫計算機程序就是把用某種方式描述的算法,再通過計算機語言重新對其進行描述。

1.2.2  數據結構

數據結構是一種計算機存儲、組織數據的方式。數據很好理解,比如去買東西時共花了50元錢,50就是一個准確的數據。在計算機中,數據有整數、實數、字符串、圖像和聲音等多種類型,而數據結構就是指各種類型數據之間的相互關系。常見的數據結構有數組、棧、隊列、鏈表、樹、圖等。例如,圖1.5為一個樹結構示意圖。

 

 

 

1.2.3  集成開發環境IDE

IDE是Integrated Development Environment 的縮寫,表示“集成開發環境”,它是一種用於提供程序開發環境的應用程序,一般包括代碼編輯器、編譯器、調試工具和圖形化用戶界面工具等,例如,用於開發C#程序的Visual Studio (如圖1.6所示)、用於開發Java程序的Eclipse (如圖1.7所示)等,都是集成開發環境。

 

 

 

1.2.4  軟件開發工具包SDK

SDK是Software Development Kit的縮寫,中文意思是“軟件開發工具包”,這是一個覆蓋面相當廣泛的名詞,可以這么說,輔助開發某一類軟件的相關文檔、實例和工具的集合都可以叫作SDK。例如,在使用C#語言進行開發之前,需要安裝由微軟公司推出的.NET SDK (即.NET軟件開發工具包)。

1.2.5  編譯

編譯是把計算機語言變成計算機可以識別的二進制語言,由於計算機只識別0和1,所以編譯程序就是把使用計算機語言編寫的程序,編譯成計算機可以識別的二進制程序的過程。

1.3  認識.NET Framework

.NET Framework又稱.NET框架,它是微軟公司推出的完全面向對象的軟件開發與運行平台,盡管.NET Framework運行在Windows操作系統和Windows Mobile操作系統上,但它也有運行在其他操作系統上的版本,例如Mono, Mono 是.NET Framework 的開源版本(包含C#編譯器),該版本可以運行在幾個操作系統上,包括各種Linux版本和MacOS。

Mono是.NET生態系統的重要組成部分,對於使用Xamarin創建客戶端應用程序尤其重要。微軟還創建了一個跨平台的開源庫.NET Core,希望為Mono和.NET Core框架提供幫助。

可以使用.NET Framework 創建桌面應用程序、Windows Store(UWP)應用程序、雲/Web應用程序、Web API和其他各種類型的應用程序。另外注意,對於Web.雲和Web API應用程序,按照定義,它們是多平台的應用程序,因為任何帶有Web瀏覽器的系統都可以訪問它們。

.NET Framework有兩個主要組件,分別是:公共語言運行時(Common Language Runtime,簡稱CLR)和類庫,如圖1.8所示。

 

 

 

下面分別對.NET Framework的兩個主要組成部分進行介紹:

(1)公共語言運行時:公共語言運行時(CLR) 負責管理和執行由.NET編譯器編譯產生的中間語言代碼(.NET程序執行原理如圖1.9所示)。在公共語言運行時中包含兩部分內容,分別為CLS 和CTS,其中,CLS表示公共語言規范,它是許多應用程序所需的一套基本語言功能: 而CTS表示通用類型系統,它定義了可以在中間語言中使用的預定義數據類型,所有面向.NET Framework的語言都可以生成基於這些類型的編譯代碼。

 

 

說明:中間語言(IL 或MSIL,Microsoft Intermediate Language)是使用C#或者VB.NET編寫的軟件,只有在軟件運行時,.NET編譯器才將中間代碼編譯成計算機可以直接讀取的數據。

(2)類庫:類庫里有很多編譯好的類,可以直接使用。例如,進行多線程操作時,可以直接使用類庫里的Thread類:進行文件操作時,可以直接使用類庫中的IO類等。類庫實際上相當於一個倉庫,這個倉庫里面裝滿了各種工具,可以供開發人員直接使用。

1.3.1  .NET Standard和.NET Core

微軟最初創建.NET Framework時,將其設為在多平台上運行,但還沒有業界接受的開源分支的概念。如今項目可以被分支並在多個平台上定制運行。例如,.NET Compact Framework和.NET Micro Framework是.NET Framework的分支,就像.NET Core一樣。.NET Core是進行跨平台代碼開發的最優化的解決方案。每個.NET Framework的分支都有組具體的要求和目標, 正是這些需求和目標催生了對應的分支。

.NET Framework中包含一組基類庫(Base Class Libraries, BCL), 這些庫中包含的API用於大多數開發人員需要程序完成的基本操作,例如訪問文件、處理字符串、管理流、將數據保存到集合中、安全屬性等。這些基本功能的實現通常在不同的.NET Framework版本中是不同的。這就要求開發人員根據應用程序運行的平台,針對應用程序的不同分支或版本去學習、開發和管理多個BCL。.NET Standard已經解決了這個問題。

微軟的期望是,這個分支概念很快將導致更多的.NET Framework版本出現。版本數量的增加,就需要有一組標准的基本編程API來處理每種分支與版本。若沒有這個跨平台的基本庫,開發和支持的難度會阻止這些分支版本被迅速采用。簡言之,NET Sandard是一個類庫,它提供的API支持使用了.NET Patom的應用程序的任何分支或版本。

1.3.2  使用.NET Framework和.NET Core編寫應用程序

使用NET Framework或NET Core編寫應用程序,就是使用.NET代碼庫編寫代碼(使用支持.NET Framework的任何一種語言)。 本課程用Visual Studio 進行開發,Visual Studio 是一種強大的集成開發環境,支持C#(以及托管和非托管C++、Visual Basic和其他一些語言)。

這個環境的優點是便於把.NET功能集成到代碼中。我們創建的代碼完全是C#代碼,

為執行C#代碼,必須把它們轉換為目標操作系統能理解的語言,即本機代碼(native code)。這種轉換稱為編譯(compiling)代碼,由編譯器執行。在.NET Framework和.NET Core下,此過程包括兩個階段:

(1)CIL和JIT

在編譯使用.NET Framework或NET Core庫的代碼時,不是立即創建專用於操作系統的本機代碼,而是把代碼編譯為通用中間語言(Common Intermediate Language, CIL)代碼,這些代碼並非專門用於任何一種操作系統,也非專門用於C#。其他.NET語言(如Visual Basic .NET或F#)也會在第一階段編譯為這種語言。開發C#應用程序時,這個編譯步驟由Visual Studio完成。

要執行應用程序,必須完成更多工作,這是Just-In-Time(JIT)編譯器的任務,它把CIL編譯為專用於OS和目標機器架構的本機代碼。這樣OS才能執行應用程序。CIL 代碼僅在需要時才編譯。這種編譯可以在應用程序的運行過程中動態發生,不過開發人員一般不需要關心這個過程。除非要編寫性能十分關鍵的高級代碼,否則知道這個編譯過程會在后台自動進行,並不需要人工干預就可以了。

(2)程序集

編譯應用程序時,所創建的CIL代碼存儲在一個程序集(assembly)中。程序集包括可執行的應用程序文件(這些文件可以直接在Windows上運行, 不需要其他程序,其擴展名是.exe)和其他應用程序使用的庫(其擴展名是.dll)。

除包含CIL外,程序集還包含元信息(即程序集中包含的數據的信息,也稱為元數據)和一些可選的資源(CIL使用的其他數據,例如,聲音文件和圖片)。元信息允許程序集是完全自描述的。不需要其他信息就可以使用程序集,也就是說,我們不會遇到沒有把需要的數據添加到系統注冊表中這樣的問題,而在使用其他平台進行開發時這個問題常常出現。

(3)托管代碼

在將代碼編譯為CIL,再用JIT編譯器將它編譯為本機代碼后,CLR/CoreCLR的任務尚未全部完成,還需要管理正在執行的用NET Framework和NETCore編寫的代碼(這個執行代碼的階段通常稱為運行(runtime))。即CLR/CoreCLR管理着應用程序,其方式是管理內存、處理安全性以及允許進行跨語言調試等。相反,不受CLR/CorCLR控制運行的應用程序屬於非托管類型,某些語言(如C++)可以用於編寫此類應用程序,例如,訪問操作系統的底層功能的應用程序。但是在C#中,只能編寫在托管環境下運行的代碼。我們將使用CLR/CoreCLR的托管功能,讓.NET 處理與操作系統的任何交互。

(4)垃圾回收

托管代碼最重要的一個功能是垃圾回收(garbage collection)。這種.NET方法可確保應用程序不再使用某些內存時,就會完全釋放這些內存。在.NET推出以前,這項工作主要由程序員負責,代碼中的幾個簡單錯誤會把大塊內存分配到錯誤的地方,使這些內存神秘失蹤。這通常意味着計算機的速度逐漸減慢,最終導致系統崩潰。

.NET垃圾回收會定期檢查計算機的內存,從中刪除不再需要的內容。執行垃圾回收的時間並不固定,可能一秒鍾內會進行數千次的檢查, 也可能每幾秒鍾才檢查一次,不過一定會進行檢查。

這里要給程序員一些提示。因為是在不可預知的時間執行這項工作,所以在設計應用程序時,必須留意這一點。需要許多內存才能運行的代碼應自行完成清理工作,而不是坐等垃圾回收。

1.4  C#語言

C# (讀作C Sharp)是一種面向對象的編程語言,從C和C++語言演化而來,是微軟專門為使用.NET平台而創建的,主要用於開發運行在.NET平台上的應用程序,C#的語言體系都是構建在.NET框架上。C#吸取了以往語言失敗的教訓,融合了其他語言的許多優點,並解決了它們存在的問題。通過TIOBE編程語言排行榜(如圖1.10所示)可以看出,C#長期居於主流編程語言行列,這也說明了C#語言被越來越多的人所認可和使用。本節將詳細介紹C#語言的特點以及C#與.NET的關系。

 

 

1.4.1  C#語言的發展

C#是微軟公司在2000年6月發布的一種編程語言,主要由Anders Hejlsberg( Delphi和Turbo Pascal語言的設計者)主持開發,它主要是微軟公司為配合.NET戰略推出的一種全新的編程語言。

由於C#語言本身是為了配合.NET戰略推出的,因此其發展變化一直與.NET的發展相輔相成,具體版本發展歷程如圖1.11所示。

 

 

1.4.2  C#語言的特點

C#語言的主要特點如下:

(1)語法簡潔,不允許直接操作內存,去掉了指針操作。(C#中與C++高級功能等價的功能(例如直接訪問和處理系統內存),只能在標記為“unsafe"的代碼中使用。這種高級編程技術存在潛在威脅,因為它可能覆蓋系統中重要的內存塊,導致嚴重后果。)

(2)C#是一種類型安全的語言(與C++不同)。這表示一旦為某個數據指定了類型,就不能轉換為另一種不相關的類型。在類型之間轉換時,必須遵守嚴格的規則。

(3)徹底的面向對象設計,C#具有面向對象語言所應有的一切特性:封裝、繼承和多態。

(4)與Web緊密結合,C#支持絕大多數的Web標准,例如HTML、XML、SOAP等。

(5)強大的安全性機制,可以消除軟件開發中常見的錯誤( 如語法錯誤),.NET 提供的垃圾回收器還能夠幫助開發者有效地管理內存資源。

(6)兼容性較好,因為C#遵循.NET的公共語言規范(CLS), 從而保證能夠與其他語言開發的組件兼容。

(7)完善的錯誤、異常處理機制,C#提供了完善的錯誤和異常處理機制,使程序在交付應用時能夠更加健壯。

1.4.3  C#與.NET Framework

.NET Framework是微軟公司推出的一個全新的開發平台,而C#是專門為與微軟公司的.NET Framework一起使用而設計的一種編程語言,在.NET Framework平台上開發時,可以使用多種開發語言,比如C#、VB.NET、 VC++.NET、 F#等,而C#只是其中的一種。

1.4.4  C#的應用領域

.NET Framework沒有限制應用程序的類型。C#使用的是NET Framework,所以也沒有限制應用程序的類型(但是,目前使用.NET Core僅可以編寫Console和ASP.NET應用程序)。這里僅討論幾種常見的應用程序類型:

(1)桌面應用程序這些應用程序(如Microsoft office)具有我們很熟悉的Windows外觀和操作方式,使用.NET Framework的Windows Presentation Foundation(WPPD模塊就可以簡便地生成這種應用程序。WPF模塊是一個控件庫,其中的控件(例如按鈕、工具欄和菜單等)可用於建立Windows用戶界面(UI)。

(2)Windows Store 應用程序這是 Windows 8中引入的一類新的應用程序。 此類應用程序主要針對觸摸設備設計,通常全屏運行,側重點在於簡潔清晰。創建這類應用程序的方式有多種,包括使用WPF。

雲Web應用程序.NET Framework和.NET Core包括一個動態生成 Web內容的強大系統——ASP NET,允許進行個性化和實現安全性等。另外,這些應用程序可以在雲中駐留和訪問,例如Microsoft Azure平台。

(3)Web API 這是建立REST風格的HTTP服務的理想框架,支持許多客戶端,包括移動設備和瀏覽器。

(4)WCF服務這是一種靈活創建各種分布式應用程序的方式。使用WCF服務可以通過局域網或Internet交換幾乎各種數據。無論使用什么語言創建WCF服務,也無論WCF服務駐留在什么系統上,都使用一樣簡單的語法。

C#幾乎可用於所有領域,如便攜式計算機、手機或者網站等,其應用領域主要包括:

(1)游戲軟件開發

(2)桌面應用系統開發

(3)智能手機程序開發

(4)多媒體系統開發

(5)網絡系統開發

(6)RIA應用程序( Silverlight)開發

(7)操作系統平台開發

(8) WEB應用開發

1.5  Visual Studio 2017

Visual Studio 2017是微軟為了配合.NET戰略推出的集成開發環境,同時也是目前開發C#程序最新的工具。Visual Studio不是開發C#應用程序必需的開發工具或集成開發環境(IDE),但使用它可以使任務更簡單一些。如果願意的話,可在基本的文本編輯器(如常見的記事本應用程序)中處理C#源代碼文件,再使用NET Framework和.NET Core中包含的命令行編譯器把代碼編譯到程序集中。本節將對Visual Studio 2017的安裝進行詳細講解。

1.5.1  Visual Studio 2017產品

Microsoft提供了如下幾個Visual Studio版本:

(1)Visual Studio Code

(2)Visual Studio Community

(3)Visual Studio Professional

(4)Visual Studio Enterprise

其中,Visual Studio Code 和Community版本可免費獲得。但Professional 和Enterprise版本提供了一些額外的功能,需要購買才能獲得。

各種Visual Studio產品可以創建所需的幾乎所有C#應用程序。Visual Studio Code是一個簡單但健壯的代碼編輯器,它運行在Windows、Linux 和iOS 操作系統上。與Visual Studio Code不同,Visual Studio Community在外觀和操作方式上類似於Visual Studio Professional和Enterprise。 雖然微軟在Visual Studio Community中提供了許多與Professional 和Enterprise 版本相同的功能,但還是缺少一些重要功能,比如深度調試功能和代碼優化工具。

1.5.2  安裝Visual Studio 2017必備條件

安裝Visual Studio 2017之前,首先要了解安裝Visual Studio 2017所需的必備條件,檢查計算機的軟硬件配置是否滿足Visual Studio 2017開發環境的安裝要求,具體要求如表1.12 所示。

 

 

1.5.3  安裝Visual Studio 2017

本節以Visual Studio 2017社區版的安裝為例講解具體的安裝步驟。

說明: Visual Studio 2017社區版是完全免費的,安裝Visual Studio 2017開發環境時,要求計算機上必須安裝了.NET Framework4.6框架。當前Visual Studio已更新到2019版本,

安裝Visual Studio 2017社區版的步驟如下:

(1)Visual Studio 2017社區版的安裝文件是exe可執行文件,其命名格式為“vs comunity_譯版本號.exe”,雙擊該文件開始安裝。

程序首先跳轉到如圖1.13所示的Visual Studio 2017安裝程序界面,在該界面中單擊“繼續”按鈕。

 

 

 (2)等待程序加載完成后,自動跳轉到安裝選擇項界面,如圖1.14所示,該界面主要將“通用Windows平台開發”“.NET桌面開發”及“ASP.NET和Web開發”這3個復選框選中,其他的復選框,讀者可以根據開發需要確定是否選擇安裝;選擇完要安裝的功能后,在下面“位置”處選擇要安裝的路徑,建議不要安裝在系統盤上,可以選擇-個其他磁盤進行安裝,設置完成后,單擊“安裝”按鈕。

 

 

(3)跳轉到如圖1.15所示的安裝進度界面,該界面會顯示當前的安裝進度。

 

 (4)等待安裝后,程序自動進入安裝完成頁,如圖1.16所示,在該界面中,可以直接單擊“啟動”按鈕,啟動新安裝的Visual Studio 2017開發環境,也可以在系統的“開始”菜單中,選擇“Visual Studio 2017”菜單啟動該開發環境。

 

 

說明:在安裝完成界面可能會出現一個“Android SDK”相關的警告信息,這些警告信息不影響Visual Studio 2017開發環境的正常使用,忽略即可。

如果是第一次啟動Visual Studio 2017,會出現如圖1.17所示的提示框,直接單擊“以后再說"超鏈接,進入Visual Studio 2017開發環境的主界面。Visual Studio 2017開發環境主界面如圖1.18所示。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM