天天看點

C#面試題解答(二)

4、C#中的委托是什麼?事件是不是一種委托?

委托是一個可以對方法進行引用的類。與其他的類不同,委托類具有一個簽名,并且它隻能對與其簽名比對的方法進行引用。這樣,委托就等效于一個類型安全函數指針或一個回調。事件是一種委托。

5、ADO.NET相對于ADO等主要有什麼改進?

ADO以Recordset存儲,而ADO.NET則以DataSet表示。Recordset看起來更像單表,如果讓Recordset以多表的方式表示就必須在SQL中進行多表連接配接。反之,DataSet可以是多個表的集合。ADO 的運作是一種線上方式,這意味着不論是浏覽或更新資料都必須是實時的。ADO.NET則使用離線方式,在通路資料的時候ADO.NET會利用XML制作資料的一份幅本,ADO.NET的資料庫連接配接也隻有在這段時間需要線上。

由于ADO使用COM技術,這就要求所使用的資料類型必須符合COM規範,而ADO.NET基于XML格式,資料類型更為豐富并且不需要再做COM編排導緻的資料類型轉換,進而提高了整體性能。

6、接口和抽象類有什麼差別?你選擇使用接口和抽象類的依據是什麼?

 接口是一個純粹的抽象類,沒有任何實際的東西,隻是定義了一個架構,而抽象類裡面可以有實際的一個方法,并不要求所有的方法都是抽象的。可以實作一個接口中的所有方法,也可以繼承一個抽象的類,然後覆寫其中的方法。接口一般隻有方法,而沒有資料成員或屬性。抽象類有方法,也有資料成員或屬性,一般情況下,優先考慮用接口,隻有當可能要通路到資料成員或屬性時,用抽象類。

 7、談談final, finally, finalize的差別。

final 修飾符用于指定類不能擴充或者方法或屬性不能重寫。它将防止其他類通過重寫重要的函數來更改該類的行為。帶有 final 修飾符的方法可以由派生類中的方法來隐藏或重載。

finally 塊用于清除在 try 塊中配置設定的任何資源。控制總是傳遞給 finally 塊,與 try 塊的存在方式無關。

finalize允許 Object 在“垃圾回收”回收 Object 之前嘗試釋放資源并執行其他清理操作。