您的位置:首页 > 编程语言 > ASP

C#和ASP.NET面试要问到的问题???

2008-09-17 18:43 393 查看
1.面向对象的思想主要包括什么?

面向对象三大特征:继承,封套,多态.面相对象的思想也不是一句两句就能说清楚..主要思想就是减少代码重复,增大代码复用率..

2.什么是ASP.net中的用户控件

问这样的问题,一般是迷惑你.因为新手还是分不清楚用户控件和服务器控件(也称自定义控件)..用户控件一般用在内容多为静态,或者少许会改变的情况下..用的比较大..类似ASP中的include..但是功能要强大的多.

如果现有的 ASP.NET 服务器控件都不符合应用程序的特定要求,则可以创建封装所需功能的 Web 用户控件或 Web 自定义控件。这两种控件之间的主要区别在于设计时的易创建性与易用性。

Web 用户控件易于创建,但它们在高级方案中使用起来可能不太方便。开发 Web 用户控件的方式与开发 Web

窗体页的方式几乎完全相同。与 Web 窗体相似,用户控件可以在可视化设计器中创建,可以使用与 HTML 隔

离的代码来编写,并且可以处理执行事件。但是,由于 Web 用户控件在运行时动态地进行编译,所以不能将

它们添加到工具箱中,而且它们在添加到页面上时由简单的占位符标志符号来表示。如果您习惯于完全的

Visual Studio .NET 设计时支持(包括“属性”窗口和“设计”视图预览),这将会使 Web 用户控件使用

起来更不方便。 此外,在应用程序之间共享用户控件的唯一方式是将一个单独的副本放入每个应用程序,因

此如果对该控件作出了更改,将需要进行比较多的维护。

Web 自定义控件是编译的代码,这使得 Web 自定义控件更易于使用但更难于创建;Web 自定义控件必须使用

代码来创建。一旦创建该控件,那么,您就可以将其添加到工具箱中,并在具有完全“属性”窗口支持和

ASP.NET 服务器控件的其他所有设计时功能的可视化设计器中显示该控件。此外,还可以在全局程序集缓存

中安装 Web 自定义控件的单个副本,并在应用程序之间共享该副本,这将使维护变得更容易。有关更多信息

,请参阅全局程序集缓存。

如果您的控件包含大量静态布局,用户控件则可能是较佳的选择。如果您的控件主要是动态生成的(例如数

据绑定表的行、树视图的节点或选项卡 (TabControl) 控件的选项卡),自定义控件则可能是较佳的选择。

下表概述了这两种类型之间的主要区别:

Web 用户控件

1.难于创建

2.为使用可视化设计工具的使用者提供有限的支持

3. 每个应用程序中需要控件的一个单独副本

4. 不能添加到 Visual Studio 中的工具箱

5. 适用于静态布局

Web 自定义控件

1.易于创建

2. 为使用者提供完全的可视化设计工具支持

3. 仅在全局程序集缓存中需要控件的单个副本

4. 可以添加到 Visual Studio 中的工具箱

5. 适用于动态布局

数据成员可以分静态变量、非静态变量两种.

静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成

员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因

为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员.

非成静态员:所有没有加Static的成员都是非静态成员,当类被实例化之后,可以通过实例化的类名进行访问

..非静态成员的生存期决定于该类的生存期..而静态成员则不存在生存期的概念,因为静态成员始终驻留在内

容中..

一个类中也可以包含静态成员和非静态成员,类中也包括静态构造函数和非静态构造函数..

对于winApp来说,静态成员对于程序员本身省了很多事,而且因为静态成员驻留内存,在方法与方法之间传递

共享数据的时候,所以静态成员成了我的首选..但是不要因为方便,大量使用,尤其是在内存紧张或者

用静态方法操作一些共享值的时候.或者要写多用户系统的时候,要慎之又慎.比如:

static int id = 0;

sql = "select * from table where id=" + id;l

6.ADO.net中常用的对象有哪些?分别描述一下。

Connection 数据库连接对象

Command 数据库命令

DataReader 数据读取器

DataSet 数据集

7.如何理解委托?

委托的概念,最好的说明就是事件.因为事件使用的就是委托.例如:this.Load += new System.EventHandler

(this.Page_Load);这个就是使用了一个委托.

具体的用法请参考.我以前的帖子,设计猫鼠联动..

8.new有几种用法

第一种:new Class();

第二种:覆盖方法

public new XXXX(){}

第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数

9.用sealed修饰的类有什么特点

sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其他类的基类,则会发生编译

时错误。

密封类不能同时为抽象类。

sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不
10.C#中所有对象共同的基类是什么?

System.Object.

11.重载和覆写有什么区别?

重载提供了对一个方法签名的不同参数调用的实现。覆写提供了子类中改变父类方法行为的实现。

在方法定义中,virtual有什么含意?

被virtual修饰的方法可以被子类覆写。

能够将非静态的方法覆写成静态方法么?

不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改为override。

可以覆写私有的虚方法么?

不可以,甚至子类中无法访问父类中的私有方法。

能够阻止某一个类被其他类继承么?

可以,使用关键字sealed。

能够实现允许某个类被继承,但不允许其中的某个方法被覆写么?

可以,标记这个类为public,并标记这个方法为sealed。

12.什么是抽象类(abstract class)?

一种不可以被实例化的类。抽象类中一般含有抽象方法,当然也可有具体实现。继承类只有实现过所有抽象类的抽象方法后才能被实例化。

何时必须声明一个类为抽象类?

当这个类中包含抽象方法时,或是该类并没有完全实现父类的抽象方法时。

13.接口(interface)是什么?

只含有共有抽象方法(public abstract method)的类。这些方法必须在子类中被实现。

为什么不能指定接口中方法的修饰符?

接口中的方法用来定义对象之间通信的契约,指定接口中的方法为私有或保护没有意义。他们默认为公有方法。

可以继承多个接口么?

当然。

那么如果这些接口中有重复的方法名称呢?

这种情况中你可以决定如何实现。当然需要特别得小心。但是在编译环节是没有问题的。

接口和抽象类的区别是什么?

接口中所有方法必须是抽象的,并且不能指定方法的访问修饰符。抽象类中可以有方法的实现,也可以指定方法的访问修饰符。

14.如何区别重载方法?

不同的参数类型,不同的参数个数,不同的参数顺序。

15.const和readonly有什么区别?

const关键字用来声明编译时常量,readonly用来声明运行时常量。

System.String 和System.StringBuilder有什么区别?

System.String是不可变的字符串。System.StringBuilder存放了一个可变的字符串,并提供一些对这个字符串修改的方法

有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: