什麼是擴充方法?
相信大家在寫程式的時候,都有用過Array或List<>,也知道它們有許多的擴充方法可以用。
但是有些人會誤認為這些擴充方法是隸屬於Array或List<>物件,但是其實不是,這些擴充方法均隸屬於Enumerable這個靜態類別。
既然知道了擴充方法是隸屬於靜態類別,所以說,如果今天我要自己宣告並定義某個目標類別的擴展方法,當然它必定也隸屬於靜態類別囉~
接下來,來看宣告並定義擴展方法的步驟吧!
什麼是擴充方法?
相信大家在寫程式的時候,都有用過Array或List<>,也知道它們有許多的擴充方法可以用。
但是有些人會誤認為這些擴充方法是隸屬於Array或List<>物件,但是其實不是,這些擴充方法均隸屬於Enumerable這個靜態類別。
既然知道了擴充方法是隸屬於靜態類別,所以說,如果今天我要自己宣告並定義某個目標類別的擴展方法,當然它必定也隸屬於靜態類別囉~
接下來,來看宣告並定義擴展方法的步驟吧!
當我在開發我的第一個小專案 - 英文單字本 的時候,這個桌面應用程式,包含了單字測驗複習的功能。
於是我使用Random嘗試得到打亂順序的圖片路徑,再透過PictureBox將圖片顯示在畫面上,但是我發現,打亂的效果並沒有顯現出來,而且每次顯示圖片的順序都一模一樣,這時候我請求了大神的幫助!
在 WindowsForms 中,我們可以將一些 重複性很高的參數值,存放在 App.config 中,
例如:資料夾路徑(Path)。
接下來,讓我們來看看Coding的步驟:
若想要了解Call by Reference與Call by Value的區別,則要先了解類型系統。
什麼是類別?
為什麼要建立類別?簡單來說,就是要將資料做「分類(Classify)」,使每筆資料在茫茫的記憶體中能夠最快速地被找到。
什麼是封裝?
簡單來說,建立類別(Class)就是一種生成"包裝(Package)"的概念。
把類別當作一種包裝容器,"裝進"它的欄位(Fields)、屬性(Properties)、方法(Methods)等。
宣告類別時,針對資料安全性的考量,我們會使用存取修飾詞,這就是一種"封閉"。
對於類別(Class) 與 類別成員(Class Members)設定存取修飾詞(Access Modifiers)可以控制外部對於此類別與其成員的使用:"外部是否能夠看到、設定?"。
大家一定都想知道,真正以寫程式開發為職業的人,他們在寫程式時思考的方向是什麼?
以編寫計算機程式為例,他們會希望不讓用戶看到:
為了讓編譯器(compiler)運算而對資料型別的轉換,而是更直覺地提供用戶更方便的使用體驗。
我們可以試想,當在使用一台計算機時,我們是不是只管輸入數字,然後就會得到一個數字答案,
我們不會管內部是如何運作而得出答案的!
今天要為大家介紹一個使用Dictionary物件容器的最佳時機,就是搭配Winforms的ComboBox(下拉式選單)!
那麼,我們開始製作吧!
首先,我們來看一個例子,簡單了解Dictionary的使用時機。
當某集合內的值順序是打亂的,則使用Array或List來讀取值的效能都不高!
為什麼?讓我們繼續看下去~
接續上篇《初識資料結構 - 最常被使用的物件容器?!》,此篇會針對Array與List做詳盡的解釋。
其實不論使用Array或List,它們在存儲元素資料之前,都會以Node節點(index)來包裝,所以每一元素都被一個Node所包裝。
以下將以圖解來介紹兩者區別,方便讓大家理解。
初學程式不久,常聽大家說:「要精通寫程式,先要學會資料結構與演算法」。顯然地,這些重複性資訊讓我意會到 — 認識資料結構,是我的第一門大課。然而演算法關係到邏輯的思考,經考量目前功力不及,等日後有所體悟再跟大家介紹(笑)。
那麼,什麼是資料結構?白話來說,就是針對場景的需要、選擇正確的物件容器來存儲資料。What? 沒聽過物件容器這種東西!?
物件容器簡單來說,就是以下總類:Array陣列、List串列、Dictionary、Stack堆疊、Queue佇列.....等的總稱。它們都可以容納所有型別(包含自訂型別);以WindowsForm為例,button、textbox、label.....等控件都能放進物件容器裡,所以不要有只能包含基本型別的錯覺。
相信看到這邊,還是有人不了解,為何選擇對的物件容器來存儲資料攸關重要?以及為何這樣做能讓code看起來更清晰簡潔?
以下將以此範例為大家解說:
//若我想知道班上學生(共3名),此次段考每人的平均成績(國、英、數三科平均)為多少?
//輸出學生的姓名與平均成績、班級的科目平均
//限制:個別學生資料存儲成一筆