前言
這一篇文章將會從Microsoft的.NET Class Library開始介紹,在介紹具狀態和不具狀態,以及物件和new關鍵字。
.NET Class Library
包含數以萬計方法之數以千計類別的集合,由 Microsoft 所建立,可供應用程式使用,這些類別和方法可以建置特定類型的應用程式,無論Web、電腦、行動裝置或雲端應用程式都可以使用這些類別與其方法。
呼叫方法的流程
- 一開始,請輸入類別名稱 Console
- 新增成員存取運算子,也就是 . 符號
- 新增方法的名稱 WriteLine
- 新增方法叫用運算子,也就是一組括弧 ()
- 最後,將想要以 Console.WriteLine() 方法列印為輸入參數的值新增至左括弧與右括弧之間 (例如,"Hello World!"
(選擇性) 根據開發人員設計及實作指定方法的方式,您可能也需要:
- 將其他值傳遞為輸入參數
- 接受傳回值
具狀態與無狀態方法
狀態會描述執行環境在特定時間點,隨著程式碼逐步執行各行,值會被儲存在變數中,在執行期間的任何時間點,應用程式目前的狀態便是儲存在記憶體中所有值的集合。
無狀態方法(靜態方法)
某些方法不需仰賴應用程式目前的狀況便能正常運作,換句話說,無狀態方法的實作原因,便是因為它們可以在無需參考或變更儲存在記憶體中之任何值的情況下運作,所以無狀態方法也稱為靜態方法。
具狀態方法(執行個體方法)
必須存取應用程式的狀態才能正常運作,稱為具狀態方法,因其建置方式導致要仰賴由已執行的上一行程式碼儲存在記憶體中的值,並透過更新或修改應用程式中的值來改變應用程式的狀態,所以它們也稱為執行個體方法。
欄位(Field)
具狀態會在「欄位」中追蹤其狀態,欄位可能是定義上的變數;類別的每個新執行個體都會自行擁有那些欄位的複本,以及其中儲存狀態。
類別的執行個體(Object)
執行個體稱為物件,若要建立類別的新執行個體,會使用「new」運算子建立新的執行個體。
Random dice = new Random();
new運算子
- 它會先要求電腦記憶體中的位址,該位址必須大到可以儲存以 Random 類別為基礎的新物件。
- 它會建立新物件,並將它儲存在該記憶體位址。
- 它會傳回記憶體位址,以將它儲存在 dice 變數中。
如何判斷是否需要建立該類別的執行個體?
必須要閱讀程式碼範例,可以從中看出有沒有需要從類別建立新的執行個體,當然,可以直接用用看,如果出錯就是要。
傳回值
Void方法被稱呼為「安靜地」結束,其他方法在完成時傳回一個值,通常為某個作業的結果,傳回值是方法回頭向呼叫它的程式碼進行通訊的主要方式。
方法可以設計成傳回任何資料類型、另一類別,以下為官方示範:
dice.Next(1, 7);
上述雖然會運作,並且產生了一個全新的隨機數字(int),不過沒有儲存,所以毫無意義。
輸入參數
輸入參數可能會設定方法執行其工作的方式,或者可能會直接在輸入參數上作業。
多載方法
多個方法簽章定義,多載的方法能提供不同的方式來呼叫方法,或是提供不同類型的資料,我們之所以能用不同的資料類型當作參數,是因為官方有設定多載方法。
後記
我們很常在程式中創建欄位並使用,也很常使用上方法和new運算子,不過在這之前我不知道方法有分靜態跟具狀態方法,從根本上了解方法的運作原理。