04 2012 档案
摘要:一. 构建可终结对象//System.Object public class Object { ... protected virtual void Finalize() { } }当在自定义类中重写Finalize()时,垃圾回收器就可以在从内存中删除这个对象前,调用对象的Finalize()方法。 注意,结构类型是不可以重写Finalize()的。这个成员被定义为被保护的,所以不能通过点操作符从类实例中直接调用一个对象的Finalize()方法。实际上,对象并不显示的调用Finalize()方法,其主要是由垃圾回收器...
阅读全文
摘要:静态构造函数的几点注意:一. 一个类只能定义一个静态构造函数。换句话说,静态构造函数不能被重载。二. 静态构造函数不允许访问修饰符并且不能接受任何参数。三. 无论创建了多少类型的对象,静态构造函数只执行一次。四. 运行库创建类实例或调用者首次访问静态成员之前,运行库会调用静态构造函数。五. 静态构造函数的执行先于任何实例级别的构造函数。补充一下静态类的定义:在类级别添加关键字“static"。 如果一个类被定义成静态的,就不能使用"new"关键字来创建并且只能包含用static关键字标记的成员或字段。静态类中只能有静态成员,而一般类中可以有静态成员也可以有其它非静
阅读全文
摘要:重要的两点:一. 如果按引用传递(添加ref关键字),被调用者可能改变对象的状态数据的值和所引用的对象。二. 如果按值传递(没有任何关键字修饰),被调用者可能改变对象的状态数据的值,但不能改变所引用的对象。具体整体可参考《C#与.NET4高级程序设计》第五版的P116~P118。
阅读全文
摘要:首先,.NET运行时的默认行为是忽略运算溢出。当只需要对部分代码进行溢出检测时,可以把该部分代码放入checked{}内,即可。当需要项目级别的溢出检测时,可以设置项目的属性中的生成->高级->检测运算上溢/下溢。如果在设置项目级别的溢出检测的前提下,有部分代码是可以忽略运算溢出,此时可以把这部分代码放入unchecked{}中,则表示该段代码的溢出是可以接受的。简要说明一下checked用法:如果我们使用了些命令或关键字,则C#编译器会使用额外的CIL指令来测试在将两个数值数据类型相加,相乘,相减和相除时可能产生的溢出情况。如果发生了溢出,则会得到一个运行异常:System.Ov
阅读全文

浙公网安备 33010602011771号