出處:http://blog.csdn.net/caoxicao
作者:草惜草
轉載請注明出處
問題五 描述一下 C# 中索引器的實作過程,是否隻能根據數字進行索引?參考答案:
索引器(Indexer)是C#引入的一個新型的類成員,它使得對象可以像數組那樣被友善,直覺的引用。索引器非常類似于我們前面講到的屬性,但索引器可以有參數清單,且隻能作用在執行個體對象上,而不能在類上直接作用。下面是典型的索引器的設計,我們在這裡忽略了具體的實作。
class MyClass{
public object this [int index]{
get{
// 取資料
}
set{
// 存資料
}
}
}
注意,這裡的屬性名是this,意思是回引類的目前執行個體,參數清單包含在方括号而非括号之内。索引器參數可以采用任何類型,不過int是通常采用也是最為合理的類型。同一類中還可能擁有一個以上的索引器(重載)。
問題六 C# 中要使一個類支援 FOREACH 周遊,實作過程怎樣?若要循環通路集合,集合必須滿足特定的要求。例如,在下面的 foreach 語句中:
foreach (ItemType item in myCollection)
myCollection 必須滿足下列要求:
- 集合類型:
-
- 必須是 interface 、 class 或 struct 。
- 必須包括傳回類型的名為 GetEnumerator 的執行個體方法,例如 Enumerator。
- Enumerator 類型(類或結構)必須包含:
-
- 一個名為 Current 的屬性,它傳回 ItemType 或者可以轉換為此類型的類型。屬性通路器傳回集合的目前元素。
- 一個名為 MoveNext 的 bool 方法,它遞增項計數器并在集合中存在更多項時傳回 true 。
有三種使用集合的方法:
1. 使用上述指導建立一個集合。此集合隻能用于 C# 程式。
2. 使用上述指導建立一個一般集合,另外實作
IEnumerable接口。此集合可用于其他語言(如 Visual Basic)。
3. 在集合類中使用一個預定義的集合。
(ms-help://MS.NETFrameworkSDKv1.1.CHS/csref/html/vclrfusingforeachwithcollections.htm#vclrfforeachcollections_example1)
問題七 ASP.NET 伺服器控件的生命周期:
· 1. 初始化 - Init 事件 (OnInit 方法)
2. 加載視圖狀态 - LoadViewState 方法
3. 處理回發資料 - LoadPostData 方法
對實作 IPostBackDataHandler 接口的控件,即可以自動加載回發資料的控件,如 TextBox, DropDownList 等。
4. 加載 - Load 事件 (OnLoad 方法)
5. 發送回發更改通知 - RaisePostDataChangedEvent 方法
對實作 IPostBackDataHandler 接口的控件,即可以自動加載回發資料的控件。
在第 3 步中加載回發資料,如果回發前後資料發生更改,則在這一步觸發相應的服務端事件。
6. 處理回發事件 - RaisePostBackEvent 方法
對實作 IPostBackEventHandler 接口的控件,即能引起回發的控件,如 Button, LinkButton, Calendar 等
7. 預呈現 - PreRender 事件 (OnPreRender 方法)
8. 儲存視圖狀态 - SaveViewState 方法
9. 呈現 - Render 方法
10. 處置 - Dispose 方法
11. 解除安裝 - UnLoad 事件 (OnUnLoad 方法)
問題八 接口和抽象類有什麼差別?你選擇使用接口和抽象類的依據是什麼?“抽象類”是一種不能執行個體化而必須從中繼承的類。抽象類可以完全實作,但更常見的是部分實作或者根本不實作,進而封裝繼承類的通用功能。
“接口”是完全抽象的成員集合,可以被看作是為操作定義合同。接口的實作完全留給開發者去做。
這裡是一些建議,幫助您決定使用接口還是抽象類為元件提供多态性:
- 如果預計要建立元件的多個版本,則建立抽象類。抽象類提供簡單易行的方法來控制元件版本。通過更新基類,所有繼承類都随更改自動更新。另一方面,接口一旦建立就不能更改。如果需要接口的新版本,必須建立一個全新的接口。
- 如果建立的功能将在大範圍的全異對象間使用,則使用接口。抽象類應主要用于關系密切的對象,而接口最适合為不相關的類提供通用功能。
- 如果要設計小而簡練的功能塊,則使用接口。如果要設計大的功能單元,則使用抽象類。
- 如果要在元件的所有實作間提供通用的已實作功能,則使用抽象類。抽象類允許部分實作類,而接口不包含任何成員的實作。
使用者控件模型适合建立内部,應用程式特定的控件,而自定義控件模型更适合建立通用的和可再分發的控件
問題十 面向對象的概念,主要特點
封裝(wrap)、繼承(inheritance)、重載(override)、多态(polymorphism)