[讀書筆記 ]Stephens' C# Programming with Visual Studio 2010 24-Hour Trainer 第二十章

  • 868
  • 0

閱讀Stephens' C#教材第二十章筆記

 

Chapter 20 Reusing Code with Methods.
 
本章將認識方法(Method),以及善用方法的好處。
 
方法是一群關聯的程式陳述式,精心設計在一個可以被呼叫使用的包裝中。詳細介紹可參考微軟網頁
 
 
好的方法設計可以帶來優點有:
  1. Code reuse:程式碼再利用
  2. Centralized debugging:讓除錯對象集中在單一方法
  3. Centralized maintenance:讓維護對象集中
  4. Problem decomposition:將問題分解成多個較簡單問題,容易解決
  5. Encapsulation:可以將程式開發的複雜性隱藏在方法中,簡化開發者的後續開發
 
方法的基本定義語法為:

            accessibility returnType methodName(parameters)
            {
                ...statements...
                return returnValue;
            }
 
  • 存取修飾詞(accessibility):常用的關鍵字例如:public, private等,決定其他程式碼是否可以呼叫此方法。
  • 回傳資料型別(returnType):方法執行完畢會有一個結果回傳(return),也許是某一個資料型態如int, bool或string,也可以是一個特別的值:void,表示此方法沒有結果回傳。
  • 方法名稱(methodName):也就是這個方法的名字,方法名稱的命名規則第一個字可以是字母或_(不可以數字或其他符號),後面則不限定,但不可以使用像if, while等的關鍵字。
  • 參數串列(parameters):參數的使用是一個選項,可能有也可以設計成沒有,如果有參數,可以在方法中使用這個參數進行運算。
  • 陳述式(statement):方法中要執行的程式碼
  • 回傳結果(returnValue):執行方法後要回傳給呼叫程式的結果。如果是一個void的方法則沒有回傳結果。
 
LCM程式示範宣告Lcm方法,並且在方法中呼叫十九章介紹過的Gcd方法(method reuse),進行最小公倍數的運算。
 
參數分為兩種:by value或 by reference(翻成傳值或傳址),當程式呼叫方法時,如果傳入的參數是傳值,則C#會複製一份參數,進入方法運算,參數的任何變化,不會影響原本的變數。但如果傳入的參數是傳址,代表C#會直接使用存在特定記憶體空間的變數帶入參數,則方法內的參數變化,就會影響原本記憶體空間內的變數,這裡所謂的傳址就是指記憶體空間的位址。
 
RecursiveFactorial程式示範將十九章的Factorials程式,加入一個Factorial的遞迴方法,讓程式精簡化
 
RecursiveFibonacci程式同RecursiveFactorial程式一樣。
 
SimpleEdit程式示範增加一個IsDataSafe方法,判斷檔案關閉時是否已存檔,可供需要時被呼叫使用,減少程式碼的重複性。
 
TRY IT中示範如何設計出下圖程式,其中使用了out關鍵字帶入參數,取代了ref關鍵字。(參數詳細資料請參考微軟網頁)