C#编程基础记录1- 2011年4月15日凌晨

一、值类型和引用类型

  引用类型:

      1、引用类型分派在堆上;

      2、引用类型在栈中存储一个引用,其实际存储位置位于托管堆中;

      3、引用类型应该用于定义应用程序的行为;

      4、当使用引用类型时,一般是对指针进行的操作,这个指针是指向栈的,所以此操作并不是操作引用类型对象本身。

      5、string、class、interface、数组等属于引用类型

  值类型:

     1、值类型的实例存储在栈上;

     2、值类型适合存储供C#应用程序操作数据;

     3、如果一个值类型被声明在一个方法体外并且在引用类型中,那他就会在堆上分配;

     4、值类型操作的是其本身;

     5、以下情况应创建值类型:用于数据存储;不可能有子类;不具有多态行为。

     6、int、bool、struct等属于值类型

 

二、Net中的垃圾回收机制:GC

      运行机制:每当用户创建一个对象都会为其分配一个内存空间。而内存是有限的,当内存满了,而又确定了某个对象已经不会再被使用的时候,GC就会启动释放资源。GC只能自动释放托管资源和内存回收。而非托管资源可以由析构函数去释放资源。

当程序有大量的类时候需要手工释放资源的时候,最理想的办法是通过实现一个接口显式的提供给客户调用端手工释放对象,System 命名空间内有一个 IDisposable 接口,其中有个一个Dispose方法可以用。

 

 三、 ViewState的工作机制?
     viewState是asp.net页面框架管理的一个隐藏的窗体字段。当asp.net执行某个页面时,该页面上的viewstate值和所有控件将被收集并格式化成一个编码字符串,然后被分配给隐藏窗体字段的值属性。回传后,asp.net页面框架将解析viewstate字符串,并为该页面和各个控件填充viewstate属性,然后控件再使用viewstate数据将自己重新恢复为以前的状态。
  自定义的viewstate使用键值方式保存页面的数据。
  ViewState 的禁用有三种方式

  1)禁用单个控件:控件.EnableViewState = false;
  2)禁用单个页面:<%@ Page EnableViewState=“false”%>
  3)禁用整个程序:web.config中,<Pages enableViewState=“false”>

四、两种索引的区别和使用,
    聚集索引和非聚集索引
    聚集索引:正文内容有一定的顺序排列,查询可以根据正文就可以查询。
    非聚集索引:正文和目录是分开的,先查找到目录,然后根据目录查找到正文的内容。

五、Web请求流程
   客户机向服务器请求一个文件,IIS来识别它或者visaul web developer web server识别,所以asp.net运行库和asp.net工作进程就会开始工作了。第一次请求会启动asp.net分析器,编译器会把文件与一个aspx文件相关的C#文件一起编译,创建一个程序集,然后,net运行库把程序集编译成机器码,该程序集包含page类,调用它会把html代码返回客户端,然后删除page类,但是,程序集会保留,再今后再次访问,就不会再编译了。
      web->IIS->编译->程序集->编译成机器码->IIS->客户端
    IIS只能识别html后缀的文件,所以其他的文件将给aspnet_isapi进行处理。

六、接口和抽象类

     接口     interface:定义了一组行为规范。只能定义成员本身,不能包含实现其成员的任何代码。可以多继承。
     抽象类 abstract:抽象类不能直接实例化。要使用抽象类,必须继承这个类,抽象类可以有抽象成员,这些成员在基类中没有执行代码,这些执行代码必须在派生类中提供。

   类似之处:都包含由派生类继承的成员,都不能直接实例化,但可以声明变量
   区别:       抽象类是单继承,接口可以多继承。
                  抽象类中的成员可以是私有的,接口成员必须都使用接口的类实现,

                  接口成员必须是公共的,因为接口是倾向于外部是用的。
                  接口不能包含字段,构造函数、析构函数和静态成员成员变量
                  抽象类主要作用对象系列的基类,共享某些主要特性
                  接口则主要用于类

七、 重载(overload)和重写(overide)
      重载是让类以统一的方式处理不同数据的一种手段。重写是父类与子类中的多态性,对父类函数进行重新定义 ,如果子类中定义某方法与父类相同,则该方法被重写 ,相当于子类覆盖了父类中的方法。         
     重载的方法是在同一个类中的关系,重写的方法是在子类和父类中关系。
     重载要求方法参数不同,重写要求方法参数相同返回类型都要相同。                                                                           

 八、    CLR,CLS,MSIL ,CTS
   CLR是公共语言运行库,是一个运行时环境,负责资源管理。
   MSIL 微软中间语言,所有的Net语言编译器都生成它,这是编译器生成的二进制代码的公共标准是CLR的执行语言。
   CLS是公用语言规范。作用是在所有与CLS兼容的语言中编写的程序都共享组件,这些组件都具有跨各种语言界限的完全继承性。比如CLS并不去关心一种语言用什么关键字实现继承,只是关心该语言如何支持继承。
   CTS 公共类型系统。定义了所有NET语言使用的基本类型,以及定义自己的类的规则。可以防止不兼容方式实现语言。                          

posted @ 2011-04-15 00:09  淹死的鱼  阅读(236)  评论(0编辑  收藏  举报