C#中用dispose()关闭了对象,为什么还可以访问?怎么才能真正销毁对象?

问题描述

C#中用dispose()关闭了对象,为什么还可以访问?怎么才能真正销毁对象?

C#中用dispose()关闭了对象,为什么还可以访问?怎么才能真正销毁对象?

解决方案

dispose()不会销毁对象,它只是一个普通的方法。C#是自动垃圾回收的,你只要把对象引用指向null,就可以了。

解决方案二:

dispose只是释放资源,并不是销毁对象。你将其置为null,会有clr的垃圾回收器自动回收的。

时间: 2024-10-31 05:04:16

C#中用dispose()关闭了对象,为什么还可以访问?怎么才能真正销毁对象?的相关文章

winform-为什么ShowDialog子窗体关闭后还能访问里面的属性?

问题描述 为什么ShowDialog子窗体关闭后还能访问里面的属性? MyTest test = new MyTest(); test.ShowDialog(); test = null; MessageBox.Show("hello My name is " + test.Name); 为什么MyTest窗体关闭了,还能访问里面的属性值test.Name? 解决方案 本来就应该这样. 要不怎么获取对话框用户的输入呢? 你看系统对话框也是这样: OpenFileDialog ofn =

文件上传功能,关闭网页后文件还能继续上传,再次打开网站的时候能显示文件的进度

问题描述 文件上传功能,关闭网页后文件还能继续上传,再次打开网站的时候能显示文件的进度 小弟,想开发一个b/s结构的文件上传功能,然后怎么能在关闭网页后文件还能继续上传 ,然后再次打开网站的时候能显示文件上传的进度,小弟先谢谢了! 解决方案 纯b/s肯定不行,浏览器关闭了谁去上传数据?只能是用activex去启动一个客户端程序,让它在后台上传文件. 解决方案二: 这个在B/S结构下是不能实现的,二楼的回答貌似是断点续传的实现,是你的想法? 建议你不要在这个想法上花心思了,没结果的, 冒昧问一下,

c#-C# 窗体关闭后 进程也关闭了 但是线程还在运行 怎么办

问题描述 C# 窗体关闭后 进程也关闭了 但是线程还在运行 怎么办 Thread TheOpenPrint; TheOpenPrint = new Thread(new ThreadStart(OpenPrin)); TheOpenPrint.IsBackground = true; //申明的地方 private void CloseThread() { System.Environment.Exit(0);//退出全部线程 System.Diagnostics.Process.GetCurr

① 在对象被垃圾回收器回收的时候,析构函数被GC自动调用 ②当对象即将离开作用域时,系统自动调用对象的的析构函数

问题描述 资料上说:①当对象即将离开作用域时,系统自动调用对象的的析构函数②在对象被垃圾回收器回收的时候,析构函数被GC自动调用-----------------------------------------------所以我就迷惑:当对象即将离开作用域时,即使垃圾回收器没有回收,系统也会自动调用对象的的析构函数吗?还是垃圾回收器与析构函数是"捆绑"在一起的?(即析构函数只有在垃圾回收器回收时才会被调用,其他任何情况析构函数都不会被调用,析构函数被系统调用说明垃圾回收器在执行回收工作

《Java数字图像处理:编程技巧与应用实践》——第2章 Java BufferedImage对象及其支持的API操作 2.1 BufferedImage对象的构成

第2章 Java BufferedImage对象及其支持的API操作 第1章我们一起学习了Java中的Graphics图形包基本概念与知识,本章将介绍Java中关于图像文件操作的基本知识.首先是Java 2D图像对象BufferedImage的组件构成.与图像文件之间的关系.格式支持,以及如何利用BufferedImage对象在Java语言中实现像素读写操作.然后通过BufferedImageOp接口介绍Java中几种非常有用的对像素操作的Buffered-ImageOp的实现类.最后将集合上述

和我一起学Effective Java之创建和销毁对象

前言 主要学习创建和销毁对象: 1.何时以及如何创建对象 2.何时以及如何避免创建对象 3.如何确保它们能够适时地销毁 4.如何管理对象销毁之前必须进行的清理动作 正文 一.用静态工厂方法代替构造器 获取类的实例的常用方法有: 1.公有的构造器 2.公有的静态工厂方法 下面通过Boolean类(基本类型boolean的包装类)的简单示例来学习: //公有的构造器 public Boolean(String s) { this(parseBoolean(s)); } //公有的静态工厂方法 pub

关于序列化:PHP 拥有序列化方法,可以返回对象的字符串表示。但序列化只保存对象的成员数据而不包话方法

对象|数据|字符串     PHP不支持永久对象,在OOP中永久对象是可以在多个应用的引用中保持状态和功能的对象,这意味着拥有将对象保存到一个文件或数据库中的能力,而且可以在以后装入对象.这就是所谓的序列化机制.PHP 拥有序列化方法,它可以通过对象进行调用,序列化方法可以返回对象的字符串表示.然而,序列化只保存了对象的成员数据而不包话方法. 在PHP4中,如果你将对象序列化到字符串$s中,然后释放对象,接着反序列化对象到$obj,你可以继续使用对象的方法!我不建议这样去做,因为(a)文档中没有

hibernate jackson-带有对象属性的bean,如何转换成json对象或者字符串

问题描述 带有对象属性的bean,如何转换成json对象或者字符串 Accounts类 { ....属性 private Users user: //这个是一个User类.对应到数据库上是userid } 现在.我在action层.需要把得到的Accounts实例,转换成json格式. 出现问题:Accounts实例可以成功转换成json格式字符串.但是其中User的相关信息并没有得到.而且调试发现Accounts实例中是有User属性值的[我已经取消了懒加载].问题就出现了转换到json这块了

求教:js对象中的函数 访问变量的问题

问题描述 求教:js对象中的函数 访问变量的问题 name = "global"; var obj = { name:"obj", fun:function(){ alert(name); } }; obj.fun(); 结果是global,我觉得应该是obj才对,求解答 解决方案 备忘:Js函数修改及访问对象内变量.按照名称访问变量.属性.对象或影片剪辑.eval 函数关于空指针类型的类变量的成员函数访问的问题 解决方案二: fun:function(){ ale