摘要: 特殊的Stringstring不是用newobj指令创建,而是用ldstr指令创建在类型表现上面string为值类型语义,在内存上面string为引用类型,存储在托管堆上面两次创建内容相同的string对象可以指向相同的内存地址String是密封的不能被子类继承String是夸程序域的可以在不同的程序域里面访问字符串恒定行,是指字符串已经创建就不能更改,字符串驻留机制 string strA = "abcdef"; string strB = "abcdef"; Response.Write(ReferenceEquals(strA, strB)); / 阅读全文
posted @ 2014-01-23 16:54 瀚海行舟 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 对象判等主要包含了四种方法1. public virtual bool Equals(object obj) 虚方法比较对象实例是否相等2.public static bool Equals(object objA,object objB) 静态方法比较对象实例是否相等3. public static bool ReferenceEquals(object objA,object objB) 静态方法比较两个引用是否相等4.==比较对象实例是否相等判等解析1. 静态方法Equals(object objA,object objB)的判等public static bool Equals(obj 阅读全文
posted @ 2014-01-23 16:53 瀚海行舟 阅读(98) 评论(0) 推荐(0) 编辑
摘要: Object是所有类型的基础类型,提供了的一些基础的方法主要有GetRype2.Equals,RefernceEquals,==ToStringGetHashCodeFinalize因为这些是object提供的方法,所有在所有的类型中都可以使用其中GetHashCode,Tostring,Equals是虚方法可以在子类中重写 阅读全文
posted @ 2014-01-23 16:52 瀚海行舟 阅读(91) 评论(0) 推荐(0) 编辑
摘要: namespace NetNiBiXiuZhiDao{ public partial class WebForm13 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { List uer = new List(); uer.Add(new UserLi() { Age = 1, Name = "Elong" }); uer.Add(new UserLi() { Age = 3, Name = "Tuan" }); uer.Add(new UserLi( 阅读全文
posted @ 2014-01-23 16:51 瀚海行舟 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 静态方法或属性,是基于类的(通过类直接调用),非静态方法或属性,是基于类的实例的,通过类的new实例调用静态类与实例无关所以不能实例化静态够着函数用于初始化类中的静态成员(静态属性,静态方法),静态构造函数不能带参数不能有访问修饰符不能个被调用(net在运行库第一次调用类之前执行)只执行一次,一个类只能有一个静态构造函数构造函数的执行顺序,分配静态成员的内存空间------执行静态成员初始化-------执行静态构造函数------分配实例对象内存空间-------执行实例成员的初始化----执行实例构造函数静态成员实现类的数据共享,因为和实例无关静态成员之和类相关,无论创建多少个实例,静态成 阅读全文
posted @ 2014-01-23 16:50 瀚海行舟 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 浅拷贝:(shallow copy)深拷贝:(deep copy)性能问题,深拷贝要对整个结构树拷贝,性能影响较大可行性,对整个结构树拷贝,在很多情况下不能实现稳定性,某些字段涉及循环,深拷贝可能进入死循环简单,浅拷贝在实现上面比较的简单String(是引用类型的深拷贝实例)浅拷贝:只要调用继承来的MenberwiseClone()方法就可以啦深拷贝:要new一个新的对象,然后把内容全部添加进去namespace NetNiBiXiuZhiDao{ public partial class WebForm11 : System.Web.UI.Page { protected void Page 阅读全文
posted @ 2014-01-23 16:49 瀚海行舟 阅读(157) 评论(0) 推荐(0) 编辑
摘要: Is和asIs:检查对象类型的兼容性,并返回true或则false,如果对象是null就一直返回false不会抛异常As:检验类型的兼容性,并返回结果,如果不兼容就返回null,不会抛异常(必须和引用类型一起使用) WebForm10 bfr =new WebForm10(); Object o = bfr as Object; if (o is WebForm10) { Response.Write("22"); } if (bfr != null) { Response.Write("11"); } 阅读全文
posted @ 2014-01-23 16:48 瀚海行舟 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 【多态】: 通过继承实现的不同对象调用相同的方法,表现出不同的行为,称之为多态【class】所有的类都最终继承自System.Object类,因此是一种引用类型1.class是引用类型,继承自System.Object类;struct是值类型,继承自System.ValueType类,因此不具多态性。但是注意,System.ValueType是个引用类型。2.从职能观点来看,class表现为行为;而struct常用于存储数据。3.class支持继承,可以继承自类和接口;而struct没有继承性,struct不能从class继承,也不能作为class的基类,但struct支持接口继承4.clas 阅读全文
posted @ 2014-01-23 16:47 瀚海行舟 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 静态常量Const(常量),动态常量,readonly(只读)常量在定义时必须初始化不能用new初始化常量,因为常量的值在编译期就必须确定,而new是在运行期才确定的Readonly不能用作局部变量,const可以用作字段和局部变量通过程序得到结论public partial class WebForm9 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { UserInfo usif = new UserInfo(); Response.Write(UserInfo.Name+"& 阅读全文
posted @ 2014-01-23 16:46 瀚海行舟 阅读(100) 评论(0) 推荐(0) 编辑
摘要: Checked/unchecked用于检测整形是否溢出Yield用于在迭代中像枚举器对象提供值或发出结束信号,yield return用于返回每个元素,yield break终止迭代public partial class WebForm9 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){UserInfo use = new UserInfo();foreach (string str in use){Response.Write(str);}}}class UserInfo{string[] 阅读全文
posted @ 2014-01-23 16:45 瀚海行舟 阅读(96) 评论(0) 推荐(0) 编辑
摘要: Using一般作用是引入命名空间using system创建别名 using alias=namespace | type(using MsWord=Microsoft.office.Interop.Word)强制资源管理using(){}Using在编译时会被换成(try-finally)Using在做资源管理的时候适合做单一非托管资源管理,多个的话建议使用tryUsing只能适用于实现了IdisPosable接口的对象类型转化explicit用于声明必须强制转化的自定义类型implicit用于声明隐私的自定义类型转化public partial class WebForm8 : Syste 阅读全文
posted @ 2014-01-23 16:44 瀚海行舟 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 【1】 new一个class对象和new一个struct或者enum有什么不同?new一个class的时候,做了两步,1是通过调用newboj命令来为实例在托管堆中分配内存,2是调用构造函数来实现对象初始化new一个statuct时候,new用于调用其带构造函数,完成实例的初始化 【2】 new在.NET中有几个用途,除了创建对象实例,还能做什么? 1.用作运算符创建新的对象,2用作修饰符,在子类中隐藏父类成员,(作为修饰符,基本的规则可以总结为:实现派生类中隐藏方法, new作为修饰符,实现隐藏基类成员时,不可和override共存,原因是这两者语义相斥:new用于实现创建一个新成员,同时. 阅读全文
posted @ 2014-01-23 16:43 瀚海行舟 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 【1.是否可以在静态方法中使用base和this,为什么?】在静态成员中使用base和this都是不允许的。原因是,base和this访问的都是类的实例,也就是对象,而静态成员只能由类来访问,不能由对象来访问【2.base常用于哪些方面?this常用于哪些方面?】 base常用于,在派生类对象初始化时和基类进行通信this指代类对象本身,用于访问本类的所有常量、字段、属性和方法成员,而且不管访问元素是任何访问级别。因为,this仅仅局限于对象内部,对象外部是无法看到的,这就是this的基本思想。另外,静态成员不是对象的一部分,因此不能在静态方法中引用this【3.可以base访问基类的一切成员 阅读全文
posted @ 2014-01-23 16:42 瀚海行舟 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 尽量使用Dispose代替Finalize合理选择垃圾回收器,工作站GC和服务期GC适当的使用对象的弱类型(WearkReference类用于表示弱类型)弱类型:(weakReference)通过Target属性来表示要跟踪的对象 public class clA { public clA() { } public string strb { get; set; } public string str { get; set; } } protected void Page_Load(object sender, EventArgs e) { clA cla = new clA(); WeakR 阅读全文
posted @ 2014-01-23 16:41 瀚海行舟 阅读(110) 评论(0) 推荐(0) 编辑
摘要: CLR管理内存的区域主要有三快:1,线程的堆栈(用于值类型实例)2.,GC堆(分配小对象,当引用对象小于85000字节的时候分配在这里)3,LOh堆(分配大的实例对象)什么样的对象会被GC认为是垃圾该对象不被任何其他对象所引用,GC就会把它当做垃圾如何回收垃圾收集器根据跟列表遍历,将能找到所有可达,并形成一个可达对象图,同时对那些不可达的对象释放空间何时回收回收之后,又执行哪些操作 阅读全文
posted @ 2014-01-23 16:40 瀚海行舟 阅读(77) 评论(0) 推荐(0) 编辑