02 2013 档案

构造函数的代码膨胀问题
摘要:1. 类1 public class A { private Int32 x = 15; }查看其默认的无参构造函数形成的IL Code:.method public hidebysig specialname rtspecialname instance void .ctor() cil managed{ // Code size 16 (0x10) .maxstack 8 IL_0000: ldarg.0 IL_0001: ldc.i4.s 15 IL_0003: stfld int32 ConsoleApplication9.... 阅读全文

posted @ 2013-02-28 23:14 Gcam 阅读(188) 评论(0) 推荐(0)

构造函数
摘要:小结:1. 引用类型的实例构造函数对于引用类型,如果没有显式为其定义任何构造函数,那么,许多编译器(包括c#编译器)将会定义一个默认的无参数构造函数,该构造函数的实现只是调用基类的无参构造函数,如public class SomeType{ ...}上述代码等同于下面的代码:public class SomeType{public SomeType():base(){ };}如果存在继承关系,编译器会自动产生调用基类无参构造函数的代码,沿着继承链一直到System.Object的无参构造函数。但实例构造函数是不能被继承的,只能被当前类使用,不能被子类调用。2. 值类型实例构造函数a. 值类型没 阅读全文

posted @ 2013-02-28 23:13 Gcam 阅读(204) 评论(0) 推荐(0)

关于参数
摘要:小结:1. 按引用传递参数在C#中可以使用关键字out或ref来实现按引用传递参数,从CLR的角度看,out与ref生成的元数据及IL代码都是相同的。a. out参数在传值前可以先赋值也可以不赋,但在方法返回时必须被赋值b. ref参数在传值前必须先赋值,在方法返回时可以修改其值c. 重载仅存在out和ref差异的方法是不合法的,因为这两个方法签名的元数据表示是相同的。如:public sealed class Point{ static void Add(out Int32 sx){...} static void Add(ref Int32 sx){...}}//这是不允许的d... 阅读全文

posted @ 2013-02-27 20:58 Gcam 阅读(225) 评论(0) 推荐(0)

存储过程
摘要:1. 存储过程优点[摘录] a. 存储过程可以使得程序执行效率更高、安全性更好,因为过程建立之后已经编译并且储存到数据库,直接写sql就需要先分析再执行因此过程效率更高,直接写sql语句会带来安全性问题,如:sql注入 b. 建立过程不会很耗系统资源,因为过程只是在调用才执行。 c. 存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量T-sql语句的代码流量。2. 包【含包头与包体】 a. 包头 包含对外可用的函数的声明、存储过程的声明、变量的声明等 b. 包体 包含包的实现,如函数的实现、过程的实现等3. 包头的定义create or replace packge 阅读全文

posted @ 2013-02-26 22:11 Gcam 阅读(210) 评论(0) 推荐(0)

基础(二)
摘要:小结:1. 静态类【static class】a. 不能被实例化,值类型(如:结构)不能用static修饰,因为CLR总是允许值类型可以被实例化。b. 静态类直接继承自System.Objectc. 静态类不能实现任何接口,因为接口中的方法是要通过接口的实现类实例化后访问的,而静态类是不能实例化的2. Constants【常量】a. 在编译期间赋值,隐式认为是static的,但是在声明时不能用static修饰b. 当我们的代码中引用了一个const常量时,compiler会先在程序集的metadata中查找该常量的声明,然后提取它的值并将其值直接放进IL Code中,也就是说在Runtime时 阅读全文

posted @ 2013-02-25 22:46 Gcam 阅读(190) 评论(0) 推荐(0)

关于基础类型
摘要:小结:1. 关于值类型与引用类型a. 值类型在线程栈上分配,不受垃圾回收器的控制,减少了托管堆的作用,所有的值类型都继承自System.ValueType, 后者继承自System.Object。b. 引用类型在托管堆上分配,受垃圾回收器的控制。c. 装箱与拆箱 装箱做了哪些操作? 1)统计值类型转引用类型所需的字节数 = 值类型本身所需要的字节数 + 类型对象指针 + 同步块索引 2)在托管堆上分配空间 3)把值类型中的域拷贝到分配的空间中 4)返回在堆中的地址 拆箱做了哪些操作?是不是装箱的相反过程?答案是否定的 拆箱中只把托管堆中的域拷回给值类型,但并不会拷贝类型对象指针以及同步块索引, 阅读全文

posted @ 2013-02-24 11:58 Gcam 阅读(159) 评论(0) 推荐(0)

CLR
摘要:小结:1. CLR 执行模型(略举3个托管模块,3个Resource files)2. 托管模块(Managed Module)是一个32位或64位的可移植执行文件,主要由IL和Metadata组成。其中Metadata是一系列数据表格,其中一些表格是用来记录该Module中定义的类型和成员,另外还有些数据表是用来记录该Module中引用的外界类型及成员3. CLR核心功能a. 内存管理b. 程序集的加载c. 异常的处理d. 线程同步e. 安全问题:如类型安全,不同的类型之间不能随意的进行转换,在Runtime时,CLR会作严格的检查,CLR允许同类型互转以及子类转成其父类 1)子类转父类 不 阅读全文

posted @ 2013-02-23 20:45 Gcam 阅读(304) 评论(0) 推荐(0)

App_Code文件夹和Bin文件夹
摘要:学习于:http://msdn.microsoft.com/zh-cn/library/t990ks23(v=vs.100).aspx如果网站项目包括要由多个页共享的代码,可以将这些代码保存在 Web 应用程序根目录下的两个特殊文件夹的某个文件夹中:编译过的代码(.dll 文件)放入 Bin 文件夹,源代码放入 App_Code 文件夹。 当您创建这些文件夹并在其中存储特定类型的文件时,ASP.NET 将使用特殊方式处理这些文件。1. Bin文件夹可以在 Bin 文件夹中存储编译的程序集(.dll 文件),并且 Web 应用程序任意处的其他代码(如页代码)会自动引用该文件夹。典型的示例是您为自 阅读全文

posted @ 2013-02-21 21:37 Gcam 阅读(675) 评论(0) 推荐(0)

IIS 7.0的ASP.NET应用程序生命周期概述
摘要:小结于:http://msdn.microsoft.com/zh-cn/library/bb470252(v=vs.100).aspxIIS 7.0的ASP.NET应用程序生命周期概述(一)结构概述在IIS 7.0集成模式下的请求会经历几个阶段,类似于在 IIS 6.0 中对 ASP.NET 资源的请求所经历的阶段。但是,在 IIS 7.0 中,这些阶段包含多个额外的应用程序事件,如MapRequestHandler、LogRequest 和 PostLogRequest事件。IIS 7.0和IIS 6.0的处理阶段之间的主要区别在于ASP.NET如何与IIS服务器集成。在IIS 6.0中,有 阅读全文

posted @ 2013-02-21 09:34 Gcam 阅读(191) 评论(0) 推荐(0)

导航