【原创】ASP.NET开发 笔试题目详解系列(四)

    出处: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 必须满足下列要求:

  • 集合类型:

    • 必须是 interfaceclass 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)

你可能感兴趣的:(ASP.Net(C#))