天天看點

asp.net筆試題收藏4

問題五  描述一下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) 

繼續閱讀