從今天開始我們要來學習微軟.NET平台下的一門推廣及發展迅速的語言C#,“#”的發音為英文sharp"啥普",意思是銳利的,微軟的想法是:希望把這門語言發展成為最銳利的語言,有關微軟.Net及架構的介紹,我會放到後面的課程來教授,原因是根據多次教學經驗發現,在大家剛接觸這門語言時,如果把它講得過於理論化,比較難接受,也不好理解,所以本節課的課程安排會是從認識一個簡單的C#程式入手。
在開始本節課的正式學習前,我需要同學們學會用VS建立一個控制台的應用程式,下面的代碼是建立後,編譯器自動產生的程式碼,我們就從這裡開始開啟C#之門:
簡單結構及代碼注釋
1using System;
2//使用using關鍵字引入命名空間。如:using System;引入System命名空間
3using System.Collections.Generic;
4using System.Linq;
5using System.Text;
6
7/**//*多行注釋法,為了美觀多半會寫成如下效果*/
8
9/**//***********************
10 * 這個篇幅的代碼內容: *
11 * 認識簡單的程式結構和 *
12 * 三種注釋方式 *
13 ***********************/
14//使用namespace關鍵字定義一個名為“控制台練習”的命名空間
15namespace 控制台練習
16{
17 //使用class關鍵字定義一個名為“Program”的類
18 class Program
19 {
20 //程式的進入點Main方法
21 static void Main(string[] args)
22 {
23 }
24 }
25}
請同學們看一下"//"後的文字,這些文字是我標註代碼功能解釋語句,注釋後的語句,在代碼中是不會被執行的,除了我們可以講代碼的意義或功能注釋起來,增加程式碼的可讀性外,我們還可以把暫時不用的,但是又不想刪掉的代碼先注釋掉,因為注釋掉了所以這段代碼不會被執行,將來如果要用到,只要放開注釋就可以了,避免了我們再做重寫這段代碼的無用功。
注釋的方式一共有3種,對於採用哪種方式,主要是看你想用注釋實習哪種效果,這3種注釋分別是:
1.單行注釋法"//": 就是我上面的代碼第2行所採用的注釋方式,一般只是對一行代碼做出解釋時會採用。
2.多行注釋法,使用"/*"開始注釋,使用"*/"結束注釋,一般用在對整段整篇幅代碼進行解釋時會採用,如第7行。
3.XML注釋法,在要注釋的代碼前輸入三個"/",將編譯器將會自動出現如下的帶有"<>""</>":
1 /**//// <summary>
2 /// XML的方法注釋法:
3 /// 一般採用對方法和類的注釋
4 /// </summary>
5 static void MethodName()
6 {
7
8 }
上面的代碼是定義了一個名字叫做"MethodName"的方法,方法在C#語言中是將要實現某種功能的代碼寫在"{}"裡,如果你所寫的程式要實現這個功能,就找到這種功能的代碼寫在哪個方法裡,接著找到這個方法的名字,在程式的進入點(Main方法)中調用這個方法,從而找到這個方法內寫得的功能代碼,然後執行。現在給同學們簡單的描述了方法的作用和使用,如果大家不理解,不用著急,隨著書寫代碼量的增多和學習,很快我們就會理解我現在所說的白話方法理論。
第3種用法同學們不需要現在掌握,只要熟練使用單行注釋就可以了,而且我們要養成用注釋的習慣增加代碼的可讀性,這樣更可以利人利己呀!
下面我們來學習一下一個簡單的C#程式的基本結構:
第一份代碼中我標註了一個簡單的C#程式的結果,分別是:
using 引入命名空間; //第一到第五行
定義一個命名空間 //第15行
{
定義一個類 //第18行
{
定義Main方法() //第21行
{
功能代碼語句(根據你實現的功能,決定功能代碼語句的行數);
/*每句代碼錶達一個具體功能意思的語句,
*語句之間也可以組合到一起共同完成一個或多個功能,
*每句代碼使用";"代表結束,相當於告訴編譯器遇到";"時,
*就視為完成一條功能語句的定義結束*/
}
}
}
在c#這門語言中,我們使用"{"開始作用範圍,使用"}"結束作用範圍,如第一段代碼第15行定義了一個名為“控制台練習”的命名空間,16行"{"至25行"}"中的代碼,我們認為是Program這個命名空間中作用的代碼,也可以說第18行定義的一個“Program”類是“控制台練習”這個命名空間下的一種成員,21行定義的名字為“Main”的方法是“Program”類的一種類成員,也就是說,方法是應該定義在類裡,類應該定義在命名空間裡,我不會在第一節課就教授大家命名空間和類的具體作用,我們現在能學會誰被誰包含(包裹)誰就可以了。
下面我出一道有關定義C#文法結構的題目,大家可以根據我之後給出的答案和注釋對照你的代碼。
1.在“控制台練習”的命名空間下,定義另一個類名為“LeiName”的類。
2.在“LeiName”類中,定義一個名字為“Jianfa”(減法)的方法。
3.在“Program”類中,定義一個名字為"Jiafa"(加法)的方法。
4採用XML的注釋方式,解釋"jiafa"的定義。
寫代碼前,請注意C#是區分大小寫語言,同時我們寫代碼所採用的編譯器是有智能提示功能,而且語言中的關鍵字是用藍色小寫顯示。
c#結構答案
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 namespace 控制台練習
6 {
7 //使用class關鍵字定義一個名為“Program”的類
8 class Program
9 {
10 //程式的進入點Main方法
11 static void Main(string[] args)
12 {
13 //如果想讓加法功能運行,就應該在程式的進入點Main方法中被調用,注意要使用";"來表示調用的結束,調用的方式是方法的名字和方法後的"()",這裡同學們要記住如果是一個方法調用時一定要加上(),同時要灌輸給大家一個這樣的思想,即如果是想完成一個(或一系列的)動作,就應該定義一個方法,在調用時如果是一個動作一定記得要在方法的名字後加上"()"。
14 Jiafa();
15 }
16 /// <summary>
17 /// 定義了一個名字為Jiafa的方法:第3、4題
18 /// </summary>
19 static void Jiafa()
20 {
21 //實現加法的代碼
22 }
23 }
24 //在“控制台練習”的命名空間中,定義一個Leiname類:第1題
25 class Leiname
26 {
27 //定義了一個名字為Jianfa的方法:第2題
28 static void Jianfa()
29 {
30 //實現減法的代碼
31 }
32 }
33 }
根據上面的代碼,你應該注意到:
第一題:Leiname類應該和Program類是平級的關係,應該在23行Program類結束}的後面,或是寫在第7行命名空間"控制台練習"{開始後、第8行定義Program類開始前,表明類與類的平級關係,同時類一定要在33行命名空間結束的}裡進行定義。
第二題:定義一個名字叫"jianfa"的方法,按照第二段代碼的定義方式,只是把jianfa替換了MethodName這個名字,同時應該在Leiname類的{}內部
第三題:在Program類中定義一個方法時要與Main方法同樣保持平級關係,因為他們都是Program類的類成員,只是程式是從Main方法開始執行,因為Main方法中調用了jiafa();所以程式執行後,jiafa方法內部的代碼第21行是會執行的,但是jianfa卻不會被執行,原因很簡單,是因為Main方法沒有調用他,所以jianfa內的代碼第30行不會被執行。有關Main方法的具體介紹,我會放到下一章節進行介紹。
第四題:在第17行我加入了這個方法的注釋,請大家試一下如下的效果:當你把滑鼠放置到Main方法中調用Jiafa方法的第14行代碼,編譯器會自動出現“定義了一個名字為Jiafa的方法:第3、4題”這一句提示。
現在大家能明白第三種注釋的獨到的好處了嗎?答案就是可以在調用採用XML注釋過的這個方法時,出現你所定義這個方法的備註陳述式,如這個方法的作用、用法的注意要點等提示句。試想一下,當我們成為一個編寫大型程式的項目小組其中的一員,項目中需要實現的功能會非常多,這樣就需要定義大量的方法來實現這些功能,如登入時判斷密碼必須是數字,這樣小小的方法定義的多了,程式開發週期延長時,很多方法的特殊使用就會忘記,在調用時會出現不必要的麻煩,影響整體進度,或許你的團隊中有個同事,在寫這個項目中使用者註冊新使用者的時候,同樣要求輸入密碼也必須是數字這樣的功能時,就可以直接調用你所寫的方法,而不需要他自己重新書寫,提高了工作的效率,如果你所寫的方法如果採用了XML的注釋方式,對於他也是一個友好的提示作用,這就是我先前所說的利人利己的原因!
這節課說到現在對於什麼是C#,程式的運行方式等實質性的問題一定是不明白的,今後的課程,我們會慢慢的教授給大家,但是在開始下一節的學習是,請大家一定要熟練地寫出有關C#結構的簡單定義代碼,因為在我多次教學的過程中發現,學生們寫了很多代碼,但是應該把方法定義在哪裡都搞不清楚,所以在我很早就已經調整了教學的順序,將定義簡單結構的課程作為開始篇章來學習,給學生灌輸大局觀的思想,體會流程的模式。
下節課我們將要學習Main方法及使用控制台應用程式來學習C#文法。