- 軟件開發(fā)大講堂·從入門到精通-第一輯(套裝共5冊)
- 明日科技
- 4195字
- 2020-05-21 17:58:46
第2章 開始C#之旅
(視頻講解:1小時10分鐘)
本章將詳細介紹如何編寫一個C#程序,以及C#程序的基本結(jié)構(gòu),另外,還對C#程序的常用編寫規(guī)范進行介紹。
通過閱讀本章,您可以:
掌握命名空間的概念以及如何引用命名空間
了解類的聲明方法
了解Main()方法的使用
掌握一些常用的標識符和關(guān)鍵字
了解什么是C#語句
掌握如何為C#程序添加注釋
掌握編寫C#程序時需要遵循的書寫規(guī)則和命名規(guī)范
2.1 編寫第一個C#程序

視頻講解
在大多數(shù)書籍中,編寫的第一個小程序通常是輸出“Hello World!”,這里使用Visual Studio 2017和C#語言來編寫這個程序,程序在控制臺上顯示字符串“Hello World!”。具體操作步驟如下。
(1)在Windows操作系統(tǒng)的“開始”菜單界面中找到Visual Studio 2017,單擊打開。
(2)選擇Visual Studio 2017工具欄中的“文件”→“新建”→“項目”命令,打開“新建項目”對話框,如圖2.1所示。

圖2.1 “新建項目”對話框
(3)選擇“控制臺應用程序”選項,命名為“Hello_World”,選擇保存路徑,然后單擊“確定”按鈕創(chuàng)建一個控制臺應用程序。
(4)在Main()方法中輸入代碼。
【例2.1】創(chuàng)建一個控制臺應用程序,使用WriteLine()方法輸出“Hello World!”字符串。代碼如下:(實例位置:資源包\TM\sl\2\1)

說明
創(chuàng)建項目時,自動生成的代碼不用刪除,在自動生成的代碼的Mian()方法中編寫上面的第3、第4行代碼。
程序的運行結(jié)果如圖2.2所示。

圖2.2 輸出字符串“Hello World”
2.2 初識C#程序結(jié)構(gòu)

視頻講解
C#程序結(jié)構(gòu)大體可以分為命名空間、類、Main()方法、標識符、關(guān)鍵字、語句和注釋等。下面將對C#程序的結(jié)構(gòu)進行詳細的講解。
2.2.1 命名空間
C#程序是利用命名空間組織起來的。命名空間既用作程序的“內(nèi)部”組織系統(tǒng),也用作向“外部”公開的組織系統(tǒng)(即一種向其他程序公開自己擁有的程序元素的方法)。如果要調(diào)用某個命名空間中的類或者方法,首先需要使用using指令引入命名空間,using指令將命名空間名所標識的命名空間內(nèi)的類型成員導入當前編譯單元中,從而可以直接使用每個被導入的類型的標識符,而不必加上它們的完全限定名。
C#中的各命名空間就好像是一個存儲了不同類型的倉庫,而using指令就好比是一把鑰匙,命名空間的名稱就好比倉庫的名稱,可以通過鑰匙打開指定名稱的倉庫,從而在倉庫中獲取所需的物品。
using指令的基本形式為:

【例2.2】創(chuàng)建一個控制臺應用程序,建立一個命名空間N1,在命名空間N1中有一個類A,在項目中使用using指令引入命名空間N1,然后在命名空間Test02中即可實例化命名空間N1中的類,最后調(diào)用此類中的Myls()方法,代碼如下。(實例位置:資源包\TM\sl\2\2)

程序的運行結(jié)果為“吳京登頂中國電影票房第一人”。
2.2.2 類
類是一種數(shù)據(jù)結(jié)構(gòu),它可以封裝數(shù)據(jù)成員、函數(shù)成員和其他的類。類是創(chuàng)建對象的模板。C#中所有的語句都必須位于類內(nèi)。因此,類是C#語言的核心和基本構(gòu)成模塊。C#支持自定義類,使用C#編程就是編寫自己的類來描述實際需要解決的問題。
類就好比醫(yī)院的各個部門,如內(nèi)科、骨科、泌尿科、眼科等,在各科室中都有自己的工作方法,相當于在類中定義的變量、方法等。如果要救治車禍重傷的病人,僅一個部門是不行的,可能要內(nèi)科、骨科、腦科等多個部門一起治療才行,這時可以讓這幾個部門臨時組成一個小組,對病人進行治療,這個小組就相當于類的繼承,也就是該小組可以動用這幾個部門中的所有資源和設(shè)備。
使用任何新的類之前都必須聲明它,一個類一旦被聲明,就可以當作一種新的類型來使用,在C#中通過使用class關(guān)鍵字來聲明類,聲明形式如下。

在C#中,類名是一種標識符,必須符合標識符的命名規(guī)則。類名要能夠體現(xiàn)類的含義和用途。類名一般采用第一個字母大寫的名詞,也可以采用多個詞構(gòu)成的組合詞。
【例2.3】聲明一個最簡單的類,此類沒有任何意義,只演示如何聲明一個類,代碼如下。

闖關(guān)訓練:在C#程序中定義一個名稱為Car的表示汽車的類。
2.2.3 Main()方法
Main()方法是程序的入口點,C#程序中必須包含一個Main()方法,在該方法中可以創(chuàng)建對象和調(diào)用其他方法,一個C#程序中只能有一個Main()方法,并且在C#中所有的Main()方法都必須是靜態(tài)的。C#是一種面向?qū)ο蟮木幊陶Z言,即使是程序的啟動入口點,它也是一個類的成員。由于程序啟動時還沒有創(chuàng)建類的對象,因此,必須將入口點Main()方法定義為靜態(tài)方法,使它可以不依賴于類的實例對象而執(zhí)行。
Main()方法就相當于汽車的電瓶,在生產(chǎn)汽車時,將各個零件進行組裝,相當于程序的編寫。當汽車組裝完成后,就要檢測汽車是否可用,如果想啟動汽車,就必須通過電瓶來啟動汽車的各個部件,如發(fā)動機、車燈等,電瓶就相當于啟動汽車的入口點。
可以用3個修飾符修飾Main()方法,分別是public、static和void。
? public:說明Main()方法是共有的,在類的外面也可以調(diào)用整個方法。
? static:說明Mian()方法是一個靜態(tài)方法,即這個方法屬于類的本身而不是這個類的特定對象。調(diào)用靜態(tài)方法不能使用類的實例化對象,必須直接使用類名來調(diào)用。
? void:此修飾符說明Mian()方法無返回值。
2.2.4 標識符及關(guān)鍵字
1. 標識符
標識符可以簡單地理解為一個名字,用來標識類名、變量名、方法名、數(shù)組名、文件名的有效字符序列。
C#語言規(guī)定標識符由任意順序的字母、下畫線(_)和數(shù)字組成,并且第一個字符不能是數(shù)字。標識符不能是C#中的保留關(guān)鍵字。
下面是合法標識符:

下面是非法標識符:

在C#語言中,標識符中的字母是嚴格區(qū)分大小寫的,如good和Good是不同的兩個標識符。
2. 關(guān)鍵字
關(guān)鍵字是C#語言中已經(jīng)被賦予特定意義的一些單詞,不可以把這些關(guān)鍵字作為標識符來使用。大家經(jīng)常看到的class、static和void等都是關(guān)鍵字。C#語言中的常用關(guān)鍵字如表2.1所示。
表2.1 C#常用關(guān)鍵字

2.2.5 C#語句
語句是構(gòu)造所有C#程序的基本單位。語句可以聲明局部變量或常數(shù)、調(diào)用方法、創(chuàng)建對象或?qū)⒅蒂x給變量、屬性或字段,語句通常以分號終止。
【例2.4】下面的代碼就是一條語句。

此語句便是調(diào)用Console類中的WriteLine()方法,輸出指定的字符串“Hello World!”。
2.2.6 注釋
編譯器編譯程序時不執(zhí)行注釋的代碼或文字,其主要功能是對某行或某段代碼進行說明,方便對代碼的理解與維護,這一過程就好像是超市中各商品的下面都附有價格標簽,對商品的價格進行說明。注釋可以分為行注釋和塊注釋兩種,行注釋都以“//”開頭。
【例2.5】在“Hello World!”程序中使用行注釋,代碼如下。

如果注釋的行數(shù)較少,一般使用行注釋。對于連續(xù)多行的大段注釋,則使用塊注釋,塊注釋通常以“/*”開始,以“*/”結(jié)束,注釋的內(nèi)容放在它們之間。
【例2.6】在“Hello World!”程序中使用塊注釋,代碼如下。

注意
注釋可以出現(xiàn)在代碼的任意位置,但是不能分隔關(guān)鍵字和標識符。例如,下面的代碼注釋是錯誤的:
static void //錯誤的注釋 Main(string[] args)
闖關(guān)訓練:創(chuàng)建一個控制臺應用程序,為代碼添加著作權(quán)信息的注釋,包括開發(fā)日期、作者、代碼的作用等。
2.3 程序編寫規(guī)范

視頻講解
本節(jié)將詳細介紹代碼的書寫規(guī)則以及命名規(guī)范,使用代碼書寫規(guī)則和命名規(guī)范可以使程序代碼更加規(guī)范化,對代碼的理解與維護起到至關(guān)重要的作用。
2.3.1 代碼書寫規(guī)則
代碼書寫規(guī)則通常對應用程序的功能沒有影響,但它們對于改善對源代碼的理解是有幫助的。養(yǎng)成良好的習慣對于軟件的開發(fā)和維護都是很有益的,下面介紹一些代碼書寫規(guī)則。
? 盡量使用接口,然后使用類實現(xiàn)接口,以提高程序的靈活性。
? 盡量不要手工更改計算機生成的代碼,若必須更改,一定要改成和計算機生成的代碼風格一樣。
? 關(guān)鍵的語句(包括聲明關(guān)鍵的變量)必須要寫注釋。
? 建議局部變量在最接近使用它的地方聲明。
? 不要使用goto系列語句,除非是用在跳出深層循環(huán)時。
? 避免寫超過5個參數(shù)的方法。如果要傳遞多個參數(shù),則使用結(jié)構(gòu)。
? 避免書寫代碼量過大的try-catch代碼塊。
? 避免在同一個文件中放置多個類。
? 生成和構(gòu)建一個長的字符串時,一定要使用StringBuilder類型,而不用string類型。
? switch語句一定要有default語句來處理意外情況。
? 對于if語句,應該使用一對“{}”把語句塊包含起來。
? 盡量不使用this關(guān)鍵字引用。
2.3.2 命名規(guī)范
命名規(guī)范在編寫代碼中起到很重要的作用,雖然不遵循命名規(guī)范,程序也可以運行,但是使用命名規(guī)范可以很直觀地了解代碼所代表的含義。下面列出一些命名規(guī)范,供讀者參考。
? 用Pascal規(guī)則來命名方法和類型,Pascal的命名規(guī)則是第一個字母必須大寫,并且后面的連結(jié)詞的第一個字母均為大寫。
【例2.7】定義一個公共類,并在此類中創(chuàng)建一個公共方法,代碼如下。

? 用Camel規(guī)則來命名局部變量和方法的參數(shù),Camel規(guī)則是指名稱中第一個單詞的第一個字母小寫,并且后面的連接詞的第一個字母均為大寫。
【例2.8】聲明一個字符串變量和創(chuàng)建一個公共方法,代碼如下。

? 所有的成員變量前加前綴“_”。
【例2.9】在公共類DataBase中聲明一個私有成員變量_connectionString,代碼如下。

? 接口的名稱加前綴“I”。
【例2.10】創(chuàng)建一個公共接口Iconvertible,代碼如下。

? 方法的命名,一般將其命名為動賓短語。
【例2.11】在公共類File中創(chuàng)建CreateFile()方法和GetPath()方法,代碼如下。

? 所有的成員變量聲明在類的頂端,用一個換行把它和方法分開。
【例2.12】在類的頂端聲明兩個私有變量_productId和_productName,代碼如下。

注意
在類中定義私有變量和私有方法,變量和方法只能在該類中使用,不能對類進行實例化,對其進行調(diào)用。
? 用有意義的名字命名空間namespace,如公司名、產(chǎn)品名。
【例2.13】利用公司名和產(chǎn)品名命名空間namespace,代碼如下。

? 使用某個控件的值時,盡量命名局部變量。
【例2.14】創(chuàng)建一個方法,在方法中聲明一個字符串變量title,使其等于Label控件的Text值,代碼如下。

說明
在定義有返回值的方法時,必須在設(shè)置方法時,定義方法的類型,并在方法體結(jié)束后用return返回值。
2.4 小結(jié)
本章主要介紹了C#程序的結(jié)構(gòu)、代碼書寫規(guī)范和命名規(guī)則。在C#程序的結(jié)構(gòu)中,讀者需要重點掌握命名空間、類以及C#語句。命名空間在C#程序中占有重要的地位,通過引入命名空間,可以將空間下的成員引入當前的編譯單元中;而類是C#語言的核心和基本構(gòu)成模塊,程序員可以通過編寫類來描述實際開發(fā)需要解決的問題。在編寫程序代碼時,讀者要養(yǎng)成一種良好的編寫習慣,本章列出一些代碼書寫規(guī)則和命名規(guī)范,希望能對讀者有所幫助。
2.5 動手糾錯
(1)運行“資源包\TM\排錯練習\02\01”文件夾下的程序,出現(xiàn)“當前上下文中不存在名稱Name”的錯誤提示,請根據(jù)注釋改正程序。
(2)運行“資源包\TM\排錯練習\02\02”文件夾下的程序,出現(xiàn)“應輸入標識符;int是關(guān)鍵字”的錯誤提示,請根據(jù)注釋改正程序。
(3)運行“資源包\TM\排錯練習\02\03”文件夾下的程序,出現(xiàn)“無法使用實例引用訪問成員Test03.Program.i;請改用類型名稱對其加以限定”的錯誤提示,請根據(jù)注釋改正程序。
(4)運行“資源包\TM\排錯練習\02\04”文件夾下的程序,出現(xiàn)“使用了未賦值的局部變量price”的錯誤提示,請根據(jù)注釋改正程序。
(5)運行“資源包\TM\排錯練習\02\05”文件夾下的程序,出現(xiàn)“Test05.Test.i不可訪問,因為它受保護級別限制”的錯誤提示,請根據(jù)注釋改正程序。
- Core Data應用開發(fā)實踐指南
- 物聯(lián)網(wǎng)射頻識別(RFID)技術(shù)與應用
- Scala機器學習
- 21天學通C++(第7版)
- 鑄魂:軟件定義制造
- Spring Cloud微服務架構(gòu)實戰(zhàn)
- 學校沒教的軟件工程課
- iOS移動開發(fā)從入門到精通
- 建筑運維智慧管控平臺設(shè)計與實現(xiàn)
- Scrum敏捷軟件開發(fā)
- 每天5分鐘玩轉(zhuǎn)OpenStack
- CATIA V5 從入門到精通(第二版)
- 從隱秩序到顯規(guī)則:工程體系基于V++規(guī)則引擎的生態(tài)演進
- 領(lǐng)域驅(qū)動設(shè)計工作坊
- 獵豹行動:硝煙中的敏捷轉(zhuǎn)型之旅