代码改变世界

面向对象 基础温习 第一章

2010-01-27 10:02 by Terry_龙, ... 阅读, ... 评论, 收藏, 编辑

1.什么是委托?委托和事件是什么关系?

委托是用来处理其他语言需要用函数指针来处理的情况。不过与C++函数指针不同,委托是完全面向对象的;另外,C++指针仅指向成员函数,而委托同时封装了对象实例和方法。

事件是委托类型的变量,也可以说事件是一种特殊的委托。

2.什么是反射?

反射提供了封装程序集、模块和类型的对象。通过反射,可以在运行时获得.Net中每一个类型--包括类、结构、委托、接口和枚举等等--的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。只要获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。

3.c# 是否可以从多个类中继承?如何实现多重继承?

不可以,但支持多重接口,可以使用接口的方式。

4.什么是密封类?

密封类是类的一种,用sealed修饰,不能用作基类。因此,它也不能是抽象类。密封类主要用于防止派生。密封类可以用来限制扩展。当在程序中密封了某个类时,其他类不能从该密封类中继承。使用密封类可以防止对类型进行定义,这种特性在某些情况下与面向对象编程技术的灵活性和可扩展性是相抵触的。通常不建议使用密封类的方法来处理类。

5.using 关键字有几种用途。

有两个用途。1:在程序开始时,声明程序中用到的命名空间,或者给命名空间定义别名。

      2:在程序时,处理非托管对象,保证其正确释放资源。

小技巧:

using temp=命名空间.class;

 

 6.#warning和#error分别的用途是什么?

如果编译器遇到#warning指令,则产生警告信息,给用户显示#warning后面的文本,之后继续编译。

如果编译器遇到#error指令,则给用户显示后面的文本,作为一个错误信息,然后立即退出编译。

例如:

 

public int GetNum2()
{
   
int n=1;
n
++;
#warning "正发布时,别忘了去掉这一句调试信息"
Console.WriteLine(n);
return n;
}

 

7.Asp.Net Web 应用程序和Asp.Net网站的区别是什么?

Web Application模型的优点如下:

    1.网络编译速度快。

    2.生成程序集如下:

        Web Site 生成随机的程序集名,需要通过插件 Web Deployment才可以生成单一程序集。

        Web Application可指定网站项目生成单一程序集,因为是独立的程序集,所以和其他项目一样可以指定应用程序集的名字、版本、输出位置等信息。

   3.可以将网站拆分成多个项目以方便管理。

   4.可以从项目中和源代码管理中排队一个文件。

   5.支持VSTS的Team Build方便每日构建。

   6.更强大的代码检查功能,并且检查策略受源代码控制。

   7.可以直接升级使用原来用VS 2003构建的大型系统。

Web Site模型的优点如下:

    1.动态编译该项目,马上可以看到效果,不用编译整个站点(主要优势)。

    2.同上,可以使错误的部分和使用的部分互不干扰(可以要求只有编译通过才能签入)。

    3.可以在每个页面生成一个程序集。(不建议采用这种方式)。

    4.可以把一个目录当做一个Web应用来处理,直接复制文件就可以发布,不需要项目文件。

    5.可以把页面也编译到程序集中,(一般用不到,Web Application 也可以通过Web Deployment插件来实现)