C# 入門指南- 單元10 - 類別 - 程式語言教學誌

文章推薦指數: 80 %
投票人數:10人

類別最基本的就是定義欄位(field) 以及方法(method) ,例如 class Demo { public string M; public string DoSomething(string s) { return s; } public void PrintM() ... C#入門指南 單元10-類別 ~~學習進度表~~ C#中用關鍵字(keyword)class定義類別(class) class 類別最基本的就是定義欄位(field)以及方法(method),例如 classDemo { publicstringM; publicstringDoSomething(strings) { returns; } publicvoidPrintM() { Console.WriteLine(m); } } 欄位為物件特定的值,例如賽車遊戲的車輛物件有顏色、樣式、速度等等,方法為物件去做的特定工作,例如車輛物件要啟動、加速、轉彎等等。

關鍵字class後面空一格所接的識別字為類別名稱 classDemo 此例的類別名稱為Demo,底下大括弧縮排的第一行為宣告欄位 publicstringM; 「欄位」的英文原文為field,field比較多用在資料庫中資料表的地方,實際上這個詞field在物件導向程式設計中通常會翻成「屬性」,然而「屬性」在C#官方文件中指的是property,關於「屬性」在下一個單元才會詳加介紹,這裡依照微軟提供的C#官方文件的用詞「欄位」,因為實際在微軟提供的.NET環境寫C#程式,所有的中文提示訊息都是採用微軟提供的機器翻譯。

類別Demo只宣告了一個欄位,底下定義兩個方法,首先是DoSomething() publicstringDoSomething(strings) { returns; } 關鍵字public是最大的開放權限,這裡將DoSomething()宣告為public,才能其他類別的Main()方法中呼叫DoSomething(),然後string是指DoSomething()的回傳值型態(returntype),小括弧裡頭放參數列,參數列(parameterlist)是以逗號間隔的型態名稱與參數(parameter)名稱,像是 型態1參數1,型態2參數2,型態3參數3,... 這裡DoSomething()只有一個string型態的參數s。

參數的原文為parameter,這是定義方法的時候用的詞,另外有一個詞----引數,引數的原文為argument,在呼叫方法時實際提供的值稱為argument,但是其實parameter跟argument是同一個概念,本書均採用「參數」做說明。

DoSomething()裡頭只有一行,這一行是return陳述(statement) returns; return用來回傳數值,回傳的數值就是return之後的運算式,此例直接回傳參數s。

如果方法不需要回傳值(returnvalue),就要將方法宣告為void,像是第二個方法就宣告成void publicvoidPrintM() { Console.WriteLine(m); } PrintM()就是印出欄位M的值。

我們將以上Demo的定義放進ClassDemo01的命名空間(namespace)中,然後在Program類別寫Main()方法來建立Demo型態的物件,完整程式如下 usingSystem; namespaceClassDemo01 { classDemo { publicstringm; publicstringDoSomething(strings) { returns; } publicvoidPrintM() { Console.WriteLine(m); } } classProgram { staticvoidMain(string[]args) { Demod=newDemo(); d.m="Thereisnospoon."; strings=d.DoSomething("Freeyourmind."); Console.WriteLine(s); d.PrintM(); } } } //《程式語言教學誌》的範例程式 //http://kaiching.org/ //專案:ClassDemo01 //檔名:Program.cs //功能:示範C#的類別 //作者:張凱慶 Main()預設的參數為字串陣列的args staticvoidMain(string[]args) { Demod=newDemo(); d.m="Thereisnospoon."; strings=d.DoSomething("Freeyourmind."); Console.WriteLine(s); d.PrintM(); } Main()沒有回傳值,因此宣告為void,然後void之前還有個static關鍵字,這個關鍵字是個修飾詞,static就中文而言是靜態的意思,在程式裡頭是指可以直接透過類別名稱呼叫,因此呼叫 Program.Main() 就會執行這個程式,這也是C#程式的執行方式,C#可執行程式的執行程式碼就會寫在Main()方法中。

下面先建立變數d為Demo()型態的物件,注意變數d為參考(reference) Demod=newDemo(); 然後用d加上小數點,將欄位M設定為"Thereisnospoon." d.m="Thereisnospoon."; 接下來呼叫DoSomething(),以"Freeyourmind.",然後以變數s接收回傳值 strings=d.DoSomething("Freeyourmind."); 下一行再印出s的值 Console.WriteLine(s); 最後,d再呼叫PrintM()方法 d.PrintM(); 此例執行結果如下 C:\ClassDemo01>dotnetrun Freeyourmind. Thereisnospoon. C:\ClassDemo01> 以上介紹了類別設計的最基本的兩個項目,也就是欄位及方法,下一個單元繼續討論建構子(constructor)與屬性(property)。

相關教學影片 第五堂課導覽⇨YouTube頁面連結 類別⇨YouTube頁面連結 第五堂課舉一反三⇨YouTube頁面連結 上一頁單元9-列舉與結構 回C#入門指南首頁 下一頁單元11-建構子與屬性 回C#教材首頁 回程式語言教材首頁 中英文術語對照 類別class 建構子constructor 欄位field 關鍵字keyword 方法method 命名空間namespace 參數parameter 參數列parameterlist 屬性property 參考reference 回傳值型態returntype 回傳值returnvalue 陳述statement 參考資料 1.C#語言教學課程|MicrosoftDocs-類別與物件 2.C#程式設計手冊|MicrosoftDocs-類別 重點整理 1.類別用關鍵字class定義,裡面可以定義欄位及方法,欄位為物件特定的值,方法為物件去做的特定工作。

2.C#中的欄位原文為field,另有屬性,原文為peoperty。

3.方法有參數列,參數為提供給方法計算的值,方法也可以有回傳值,回傳值就是回傳計算結果。

4.可執行的C#類別要定義static的Main()方法,這個方法可由驅動器直接呼叫。

5.利用類別定義的變數為參考。

問題與討論 1.為什麼類別要有欄位跟方法?想一想,這跟物件的意涵有什麼關聯? 2.為什麼方法有參數列?回傳值的目的是什麼? 3.欄位跟屬性有何不同?為什麼有了欄位又要有屬性? 練習 1.建立一個專案Exercise1001,裡頭設計一個類別IntegerDemo,IntegerDemo有一個int的欄位result,另有一個沒有回傳值的方法add(),add()有一個int參數,呼叫add()時會把參數與result相加,結果儲存在result,執行部分先將result設定為25,再呼叫add()以24當參數。

2.承上題,另建立一個專案Exercise1002,改成由使用者輸入兩個整數。

3.承上題,另建立一個專案Exercise1003,加入方法subtract(),subtract()沒有回傳值另外需要一個int參數,同樣呼叫subtract()是將value減去參數值,最後結果儲存在result。

4.承上題,另建立一個專案Exercise1004,繼續擴充IntegerDemo,加入乘法的方法。

5.承上題,另建立一個專案Exercise1005,繼續擴充IntegerDemo,加入除法的方法。

6.建立一個專案Exercise1006,仿照IntegerDemo,將方法改成計算階層值,結果儲存在result。

7.寫一個程式Exercise1007,仿照IntegerDemo,將成員函數改成計算費氏數列,結果儲存在result。



請為這篇文章評分?