2014年8月27日 星期三
2013年4月17日 星期三
2013年3月12日 星期二
2012年11月19日 星期一
2012年8月21日 星期二
Datetime 型別
DateTime 物件
認識 DateTime 物件
DateTime 是一個結構型態的實值型別,是用來表示日期和時間的物件,具有以下幾個特性:
- 可記錄範圍:0001/1/1 12:00:00 AM ~ 9999/12/31 11:59:59 PM
- 時間值是以刻度(Tick)為最小單位,每個 Tick 等於 100 奈秒。
- Tick 值由 0001/1/1 12:00:00 AM 開始累加計算,每 100 奈秒,Tick 值加一。
2012年5月17日 星期四
2012年5月8日 星期二
2012年3月20日 星期二
2012年3月14日 星期三
事件 (Event)
事件說明
什麼是事件
事件是物件的一種機制,當物件在某種條件狀況下,該事件就會被引發。若客戶端程式有訂閱這個事件,該物件就會送出事件引發訊息。
傳送事件的類別稱為發行者(Publisher)-> Raise Event
接收事件的類別稱為訂閱者(Subscriber)-> Handle Event
事件是物件的一種機制,比較學術的說法則是,事件是一種特殊的委派方法。通常可由二個方面來看事件:發行者和訂閱者。
- 發行者(Publisher):引發事件的類別 (Raise Event Class)
- 訂閱者(Subscriber):接收事件的類別 (Handle Event Class)
委派 (Delegate)
什麼是委派
話說委派
在設計一個類別的時候,我們可能必需在某些情況下去執行某些事情,但又不想/無法在類別裡寫死處理的方法,這時就要用到委派。 我們僅在類別裡定義一個特定的簽名(signature),指出要執行的方法的樣子(樣子指的就參數列與回傳值的型別),至於該方法叫什麼名字,內容如何,則由呼叫端於呼叫時自行決定。
舉個例好了:
假設你在設計一個警報器,你在這個類別上加上了一個"警鈴響了"事件,事件發生時,這個類別啟動自動處理模式,例如,撥打119或撥打110或通知老闆...。 但是你在設計時,根本不知道使用者要如何處理,所以這部分就可以留待使用者自行撰寫處理方法。
也就是說,在設計類別時,可能會碰到某個方法在執行時需要額外處理,但是你無法將這部分的處理寫死在類別裡,此時就得將這個部分「外包」給呼叫端自行處理。 而客戶端必須事先提供一個處理函式,等到類別的方法要執行的時候,就會回頭去呼叫(callback)那個客戶端事先指定的處理函式。這個處理函式就稱為「委派方法」。
2012年3月9日 星期五
Common Language Runtime
通用語言執行平台(Common Language Runtime,簡稱CLR)是微軟為.NET的虛擬機器所選用的名稱。 這是通用語言架構(簡稱CLI)的微軟實作版本,它定義了一個程式碼執行的環境。 CLR執行一種稱為通用中間語言的位元組碼,就是 Microsoft Intermediate Language (MSIL)。這個是微軟的通用中間語言實作版本。
2012年3月7日 星期三
2011年12月16日 星期五
參考型別
什麼是參考型別
參考型別是將變數位址 (ponter) 存在 Stack 中,但該變數位圵則指到一塊稱為「堆積(Heap)」 的記憶體區塊,該區塊才是真正資料儲存的地方。
若某個變數是參考型別,當複製該變數時,實際上複製的是另外一份參考,而這個參考會指向 Heap 中同一個記憶體位置。底下範例可看出二者實際上的差異:
類別
在物件導向語言中,大部分的工作都是透過物件來執行。 即使是一個最簡單的應用程式也需要建立一個或多個自訂類別, 然後透過這些類別的屬性(peoperty)和方法(method),去執行與該物件相關的工作。
物件導向有三個主要特性:封裝、繼承、多型。(encapsulation, inheritance, polymorphism)
- 封裝:類別可以封裝隱藏物件的屬性,必須透過該類別的執行個體及其公開的方法,外界才能存取這些屬性。
- 繼承:該父層類別公開屬性及方法可以延續到子層類別。
- 多型:因為繼承關係,讓不同的物件可以對特定的方法重新定義,就導至相同功能,在不同的物件中會有不同的表現。
型別轉換
何謂型別轉換
資料在進行型別轉換時,可分成明確轉換或隱含轉換二種。
- 明確轉換(explicit conversion):明確指定轉換的型別。
- 隱含轉換(implicit conversion):由系統自動進行不同型別資料的轉換。