【推荐阅读:Using a Custom Actio】
据此,我们能够得到 如下的代码: public void dispose(){// 完成清理操作// 通知gc不要再调用finalize方法gc.suppressfinalize(this);}public override void finalize(){dispose();base.finalize();} 对 于有些对象,可能调用close方法就更合适(例如,对于文件对象调用close就比dispose更合适),可以通过创建一个private属性的 dispose方法与public属性的close方法,并让close调用dispose来实现对某些对象调用close方法. 由 于不能确定一定会调用dispose,而且finalizer的执行也是不确定的(我们无法控制gc会在何时运行),c#提供了一个using语句来保证 dispose方法会在尽可能早的时间被调用.一般的方法是定义使用哪个对象,然后用括号为这些对象指定一个活动的范围,当遇到最内层的括号时, dispose方法就会被自动调用,对该对象进行处理. using system.drawing;class tester{public static void main(){using (font thefont = new font("arial", 10.0f)){//使用thefont对象} // 编译器将调用dispose处理thefont对象font anotherfont = new font("courier",12.0f);using (anotherfont){// 使用anotherfont对象} // 编译器将调用dispose处理anotherfont对象}}在本例的第一部分中,font对象是在using语句中创建的.当using语句结束时,系统就会调用dispose,对font对象进行处理.在
本例的第二部分,font对象是在using语句外部创建的,在决定使用它时,再将它放在using语句内,当using语句结束时,系统就会调用
dispose. using语句还能防止其他意外的发生,保证系统一定会调用dispose. 错误3:c#中的值型变量与引用型变量是有区别的 与c++一样,c#也是一种强类型编程语言.c#中的数据类型被分为了二大类:c#语言本身所固有的数据类型与用户自定义数据类型,这一点也与c++相似. 此
外,c#语言还把变量分为值类型与引用类型.除非是被包含在一个引用类型中,值类型变量的值保留在栈中,这一点与c++中的变量非常相似.引用类型的变量
也是栈的一种,它的值是堆中对象的地址,与c++中的指针非常地相似.值类型变量的值被直接传递给方法,引用型变量在被作为参数传递给方法时,传递的是索
引. 类与界面可以创建引用类变量,但需要指出的是,结构数据类型是c#的一种内置数据类型,同时也是一种值型的数据类型.... 下一页