顯示具有 DotNetFramework-Foundation 標籤的文章。 顯示所有文章
顯示具有 DotNetFramework-Foundation 標籤的文章。 顯示所有文章

2013年3月12日 星期二

Byte 與 MemoryStream 轉換

MemoryStream 是將資料存放在記憶體中的一種資料流,有時在執行資料處理時,必須將其轉換成陣列以方便處理。

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日 星期四

委派的演變

委派是一種定義方法簽章的型別,隨者 C# 版本的演變,它的使用方法也有些許的變化。 例如:具名方法,匿名方法,Lambda表示法。

2012年3月20日 星期二

委派與反射

委派就是要委託某個執行方法,但是,若是這個執行方法必須要在 RunTime 才能決定的話,那要如何設計這個委派呢?

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日 星期三

組件

什麼是組件 (Assembly)

組件是組成 .NET 應用程式部署、版本控制、重複使用、啟動範圍設定和安全權限的基本單位。 組件的形式為可執行檔 (.exe) 或動態連結程式庫檔案 (.dll),而且是 .NET Framework 的建置組塊。 它們提供 CLR 需要注意的型別實作資訊。您可以將組件視為構成一個功能邏輯單位、而且必須共同合作的一組型別和資源集合。

Properties

屬性(Properties)

2011年12月16日 星期五

實值型別

實值型別的執行個體是儲存在一個稱為「堆疊」(Stack)的記憶體區塊。 若與參考型別做比較,因為該區塊就直接包含資料,所以會有較佳的執行效率。 在.NET中,所有實值型別都在16個位元組以下。

一般實值型別可分成以下三種:

參考型別

什麼是參考型別

參考型別是將變數位址 (ponter) 存在 Stack 中,但該變數位圵則指到一塊稱為「堆積(Heap)」 的記憶體區塊,該區塊才是真正資料儲存的地方。

若某個變數是參考型別,當複製該變數時,實際上複製的是另外一份參考,而這個參考會指向 Heap 中同一個記憶體位置。底下範例可看出二者實際上的差異:

類別

在物件導向語言中,大部分的工作都是透過物件來執行。 即使是一個最簡單的應用程式也需要建立一個或多個自訂類別, 然後透過這些類別的屬性(peoperty)和方法(method),去執行與該物件相關的工作。

物件導向有三個主要特性:封裝、繼承、多型。(encapsulation, inheritance, polymorphism)

  • 封裝:類別可以封裝隱藏物件的屬性,必須透過該類別的執行個體及其公開的方法,外界才能存取這些屬性。
  • 繼承:該父層類別公開屬性及方法可以延續到子層類別。
  • 多型:因為繼承關係,讓不同的物件可以對特定的方法重新定義,就導至相同功能,在不同的物件中會有不同的表現。

型別轉換

何謂型別轉換

資料在進行型別轉換時,可分成明確轉換或隱含轉換二種。

  • 明確轉換(explicit conversion):明確指定轉換的型別。
  • 隱含轉換(implicit conversion):由系統自動進行不同型別資料的轉換。