摘要: 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) 编辑
摘要: 装箱和拆箱的过程是:装箱就是,在托管堆里面分配新建对象内存,将值类型拷贝到该内存中,返回新对象的地址,拆箱就是,在托管堆里面找到属于值类型的指针,并将托管堆里面的数据返回给值类型(返回已经装箱对象中属于值类型备份的字段地址),拆箱和装箱并不是完全对等互逆的,拆箱的想能开销远小于装箱,只有装箱过得对象才可以拆箱,将没有装箱过得引用对象拆箱会报错真正的拆箱是不包括字段的拷贝的,(但是在通常情况下在拆箱之后都会紧跟着一个字段拷贝的操作“一般是赋值”)拆箱和装箱主要是对值类型而言的,因为引用类型总是以装箱形式存在的拆箱和装箱分为,显示转化和隐式转化拆箱和装箱会带来很大的性能问题泛型可以大大的避免拆箱和 阅读全文
posted @ 2013-12-23 16:30 瀚海行舟 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 参数按照调用方式可以分为,形参和实参,形参就是被调用方法的参数,实参就是调用方法的参数Params可变参数,其实是一个特写,修饰的必须是一维数组,修饰的数组可以是任意类型,必须放在所以参数的最后面,只能使用一次传递方式分为,值类型参数的按值传递,引用类型参数的按值传递,值类型参数的按引用传递,引用类型参数的按引用传递值类型和引用类型在参数传递的时候传递的都是类型在堆栈上面的拷贝,只是值类型在堆栈上面的拷贝就是本身数据的拷贝,而引用类型在堆栈上面的拷贝是引用类型执行托管堆上面的地址,不管是值类型还是引用类型,俺引用传递必须以ref或者out关键字来修饰Ref和out可以重载方法按值传递和按址传递 阅读全文
posted @ 2013-12-19 17:55 瀚海行舟 阅读(128) 评论(0) 推荐(0) 编辑
摘要: Equals,是Object的一个虚方法值类型system.ValueType重写了object用于对实例数据的判等对值类型应用ReferenceEquals用于返回为flalse(ReferenceEquals只能用于引用类型)==默认的是比较引用地址通过重载可以比较实例数据,比如字符串比较==和Equals方法的主要区别在于多态表示形式上,==是被重载,Equals是覆写除了string类外的其他基元类型都有parse用于吧字符串转换为基元类型使用explicit或者implicit进行用户自定义类型转化 阅读全文
posted @ 2013-12-19 17:54 瀚海行舟 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 区别:1.值类型继承valueType而valueType继承Object,引用类型继承Object2.值类型内存不由GC控制,而引用类型的内存有GC控制3.值类型是密封的,不能作为其他类的基类,,而引用类型可以4.值类型不能实现继承,只能继承接口,而引用类型可以实现继承5值类型不具有多态,而引用类型有多态6.值类型不可能为null,会被初始化为0,引用类型是null(表示不指向任何托管堆地址) public class ValTyIn { public string str { get; set; } public static void MothDow() { char cstr = &# 阅读全文
posted @ 2013-12-19 17:53 瀚海行舟 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 看引用类型传值和加了ref的引用类型传值的区别(按值传递和按引用传递的IL区别)1.这种是一般的没有用ref传值的public partial class hellowordle : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { List stin = new List(); stin.Add(new prod() { id = "1", name = "111" }); stin.Add(new prod() { id = "2" 阅读全文
posted @ 2013-12-17 16:32 瀚海行舟 阅读(139) 评论(0) 推荐(0) 编辑