一、裝箱與拆箱
裝箱轉換允許將「值型別」隱式轉換為「引用型別」。存在下列裝箱轉換:
◆從任何「值型別」(包括任何「列舉型別」)到型別object。
◆從任何「值型別」(包括任何「列舉型別」)到型別system.valuetype。
◆從任何「值型別」到「值型別」實現的任何「介面型別」。
◆從任何「列舉型別」到system.enum型別。
將「值型別」的值裝箱的操作包括:分配乙個物件例項並將「值型別」的值複製到該例項中。
int i = 123;
object box = i;
拆箱也稱為取消裝箱轉換。取消裝箱轉換允許將引用型別顯式轉換為值型別。乙個取消裝箱操作包括以下兩個步驟:首先檢查物件例項是否為給定值型別的乙個裝了箱的值,然後將該值從例項中複製出來。
為使到給定值型別的取消裝箱轉換在執行時取得成功,源運算元的值必須是對某個物件的引用,而該物件先前是通過將該值型別的某個值裝箱而建立的。
object box = 123;
int i = (int)box;
二、結構和介面
結構與類有很多相似之處:結構可以實現介面,並且可以具有與類相同的成員型別。然而,結構在幾個重要方面不同於類:結構為值型別而不是引用型別,並且結構不支援繼承。結構的值儲存在「在堆疊上」或「內聯」。
當向方法傳遞結構時,將傳遞該結構的副本,而傳遞類例項時,將傳遞乙個引用。
對於結構,不像類那樣存在繼承。乙個結構不能從另乙個結構或類繼承,而且不能作為乙個類的基。但是結構可實現介面,而且實現方式與類實現介面的方式完全相同。
介面可以包含方法、屬性、事件和索引器。介面本身不提供它所定義的成員的實現。介面只指定實現該介面的類或介面必須提供的成員。
三、集合與索引器
集合基本上是由一群相同型別的物件所組成的。利用集合,可以使用相同的語法,一次處理多個物件。.net對於集合的支援,集中於system.collection命名空間裡的一組集合介面以及實現這些介面的派生類;例如,stack類實現icollection介面並且提供後進先出(last-in first-out)的資料結構集合物件,hashtable類則實現idictionary介面,為一應用雜湊演算法,提供高效率搜尋索引鍵值得字典型鍵值資料集合;這些不同的類與介面,定義了實現集合所需的功能。
了解.net對於集合所提供的支援,首先必須從ienumerable以及ienumerator這兩個介面開始進行說明,其提供了從集合中,訪問元素物件的基礎功能,定義列舉集合內所含元素的相關方法。所有的集合類,均會繼承ienumerable這個介面,這樣做讓集合物件能夠支援foreach語法,支援在集合中利用迴圈,一一瀏覽列舉其中元素的功能;ienumerator由ienumerable介面所定義的getenumerator方法所取得,其定義了訪問集合元素所需的相關方法。
索引器(indexer)使得可以像陣列那樣對物件使用下標。已為我們提供了通過索引方式方便地訪問類的資料資訊的方法。
索引器的宣告格式:
[修飾符] 資料型別 this [int index]
class indexstud ;
}public string this[int index]
set }
} indexstud stud=new indexstud();
console.write("",stud[0]);
四、異常處理
在c# 裡,異常處理就是c# 為處理錯誤情況提供的一種機制。它為每種錯誤情況提供了定製的處理方式,並且把標識錯誤的**與處理錯誤的**分離開來。
在**中對異常進行處理,一般要使用三個**塊:
◆try 塊的**是程式中可能出現錯誤的操作部分。
◆catch 塊的**是用來處理各種錯誤的部分(可以有多個)。必須正確排列捕獲異常的catch子句,範圍小的exception放在前面的catch。即如果exception之間存在繼承關係,就應把子類的exception放在前面的catch子句中。
◆finally 塊的**用來清理資源或執行要在try塊末尾執行的其他操作(可以省略)。且無論是否產生異常,finally塊都會執行。
C 物件導向程式設計筆記(二)
c 物件導向程式設計 二 一 過載與覆蓋 成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。覆蓋是指派生類函式覆蓋基類函式,特徵是 1 不同的範圍 分別位於派生類與基類 2 函式名字相同 3 引數相同 4 基類函式必須有virtu...
c 物件導向程式設計 物件導向
什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...
C 物件導向程式設計《二》 建構函式
class complex 類的前置宣告只是告訴將類的名稱編譯器,並未提供class的任何其他資訊,因此前置宣告使我們得以使用類的指標和引用,而不能使用類的物件,如下 complex p 0 定義乙個類指標 class pointer void func const complex 以complex...