21. 用sealed修饰的类有什么特点?
该类为密封类,不可被继承
22. 在.Net中所有可序列化的类都被标记为什么?
使用Serializable特性标记
23. 下面的代码中有什么错误吗?
using System;
class A
{
public virtual void F(){
Console.WriteLine(“A.F”);
}
}
abstract class B:A
{
public abstract override void F();
}
答案:abstract override 是不可以一起修饰方法
24. 请解释接口的显式实现有什么意义?
显式实现接口:实现类在实现接口中方法时,方法名前必须添加接口名,且不能添加访问修饰符。在调用时,显式实现接口的方法只能通过接口访问,不能通过类访问。
这样做的好处:
1)若一个类实现接口,而接口中的方法只需要在类的内部实现,则可以使用显式实现接口的方式,这样类的实例这无法使用该接口成员。
2)显式接口成员可以避免了成员之间因为同名而发生混淆。如果一个类希望对名称和返回类型相同的接口成员采用不同的实现方式,这就必须要使用到显式实现接口方式。
25. 请解释.NET采用委托实现的事件模型与JAVA中采用接口实现的事件模型有什么区别,
.net中的委托概念java中没有相同的,只有事件模式是一样的,java中有一个叫Obserable接口,可以添加IEventListener,使用内部类可以构建类似于委托的概念
26. 请解释ASP.NET中button linkbutton imagebutton 及hyperlink这四个控件之间的功能区别?
Button是按钮控件,具有按钮所有的属性和事件方法,在客户端被渲染为表单元素提交按钮。
Linkbutton是链接按钮,用于创建超链接样式的按钮。该控件的外观与 HyperLink 控件相同,但其功能与 Button 控件一样。它的主要作用是就是在ASP.NET页面中显示一个超链接。当点击链接时,页面就会往服务器端传递信息,并且在服务器端来处理相应的事件。在客户端被渲染为超链接以及一段用于提交数据的JS代码。
ImageButton 是图片按钮,它以一张图片来代替按钮,来执行按钮的功能,显示为图片,具有按钮的所有功能,在客户端被渲染为表单元素图片按钮。
Hyperlink是超链接控件,用于创建超链接,点击超链接可以使用户转移到同一页面的不同部分或另一个页面.不具有按钮的功能。
27. override与重载的区别
Override:方法重写,子类对父类中的方法进行重新实现,要求,父类与子类之间、方法名和参数类型,数量,顺序一致。在C#允许子类对父类的抽象方法或虚方法进行重写,以适应新的需求。
重载:在同一类中,存在多个具有相同方法名,而不同参数列表的方法,在调用时根据实际参数确定执行哪个重载方法。
28. 请描述一下ref和out在方法参数传递上的异同点?Ref和out
ref和out:相同点:
1)在实参和形参上都必须添加关键字
2)在方法中对参数的设置和改变将会被保留。
不同点:
1)ref修饰的参数在方法调用前必须初始化,而out修饰的参数在方法调用时候可以不初始化。
2)在方法中out修饰的参数必须进行赋值,而ref修饰的参数不需要。
3)out修饰的参数主要用于返回值,ref修饰的参数主要用于修改。
29. 请指出GAC的含义
GAC:Global Assembly Cache,全局程序集缓存,它的作用是可以存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.Windows.Forms等等。这样,很多程序就可以从GAC里面取得Assembly,而不需要再把所有要用到的Assembly都拷贝到应用程序的执行目录下面。举例而言,如果没有GAC,那么势必每个WinForm程序的目录下就都要从
C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705下面拷贝一份System.Windows.Forms.dll,这样显然不如都从GAC里面取用方便,也有利于Assembly的升级和版本控制。GAC中的所有的Assembly都会存放在系统目录"%winroot%\assembly下面。放在系统目录下的好处之一是可以让系统管理员通过用户权限来控制Assembly的访问。
30. 请指出.NET中所有类型的基类
.Net中所有类型的基类是System.Object