出处: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)