07 2011 档案

类型,对象,线程栈和托管堆在运行时的关系
摘要:两个类的定义:public class Employee { public Int32 GetYearsEmployed() { return 5; } public virtual String GenProgressReport() { return ""; } public static Employee Lookup(String name) { return new Manager(); } } public class Manager : Employee { public override string GenProgressReport() { return 阅读全文

posted @ 2011-07-12 23:38 Scarface 阅读(520) 评论(2) 推荐(0)

c#类型转换
摘要:CLR是类型安全性的,在运行时,CLR总是知道一个对象是什么类型。调用GetType就可以知道这个对象的确切类型。C#不要求任何特殊语法即可将一个对象转换为它的任何基类,因为向基类的转换被认为是一种安全的隐式转换。然而,将对象转换为它的某个派生类型时,C#要求只能进行显示转换(强制转换),因为这样的转换可能在运行的时候失败。可以使用is和as操作符来转型:1.使用is,只是检查对象是否兼容于指定的类型,只返回true或者false。如果是true还需自己转换一次类型。2.使用as,CLR会核实对象是否兼容指定的类型;如果是,就返回对同一个对象的非null引用;如果不是,就返回null。所以使用 阅读全文

posted @ 2011-07-10 22:12 Scarface 阅读(281) 评论(2) 推荐(0)

new操作符所做的事情
摘要:1.计算类型以及所有基类(一直到System.Object)中定义的所有实例字段所需要的字节数。堆上每个对象都需要一些额外的成员---“类型对象指针”(type object pointer)和“同步索引块”(sync block index)。这些额外的成员的字节数也会计入对象大小。2.从托管堆中分配指定类型要求的字节数,从而分配对象的内存,分配的所有字节都设置为零。3.初始化对象的“类型对象指针”和“同步索引块”成员。4.调用类型的实例构造器,向起传入在对new的调用中指定的任何实参。大多数编译器都在构造器中自动生成代码来调用一个基类构造器。每个类型的构造器在调用时,都要负责初始化由这个类 阅读全文

posted @ 2011-07-10 18:43 Scarface 阅读(343) 评论(0) 推荐(0)

Oracle转换字符串为数组
摘要:1. CREATE OR REPLACE TYPE mytable AS TABLE OF varchar2(500);2. 方法:CREATE OR REPLACE FUNCTION SEND_SPLIT (src VARCHAR2, delimiter varchar2) RETURN mytable IS psrc VARCHAR2(500); a mytable := mytable(); i NUMBER := 1; j NUMBER := 1; BEGIN psrc := RTrim(LTrim(src, delimiter), delimiter); LOOP i := InSt 阅读全文

posted @ 2011-07-04 10:48 Scarface 阅读(12305) 评论(2) 推荐(0)

导航