C#中怎么释放资源

时间:2022-01-29 03:39:58
C#中怎么释放对象资源呢?例如下面的代码:
Class1 myObject=new Class1();
myObject.method1();
myObject=null;

这样释放资源可以吗?还有其它什么好方法吗?

7 个解决方案

#1


dispose

GC

#2


对象的Dispose()方法!

#3


如果按楼上两位说的,代码要改成这样吗?
Class1 myObject=new Class1(); 
myObject.method1(); 
myObject.Dispose();

是这样释放myOject对象吗?Dispose()方法不应该这样用吧。

#4


不光是有Dispose(),还有Finalize()、GC.Collect(),
不过.net有垃圾收集机制,如果不是很有必要,不要使用这些,实际上就算调用了上面三个方法中的前两个,该对象也不一定就马上释放掉了,只不过是把它的垃圾收集的优先级提高了,在下一次收集的时候就会释放掉,而GC.Collect()是立即释放资源(收集垃圾),但不释放指定的资源。

#5


谢谢楼上! 那么您认为下面代码的第三行应该写成什么好呢?谢谢!
1. Class1 myObject=new Class1();  
2. myObject.method1();  
3.

#6


谢谢楼上! 那么您认为下面代码的第三行应该写成什么好呢?谢谢! 
1. Class1 myObject=new Class1();   
2. myObject.method1();   
3.

#7


如果你的对象很大的话,可以先Dispose(),然后GC.Collect()
1. Class1 myObject=new Class1();   
2. myObject.method1();   
3. myObject.Dispose();//前提是你的Class1继承了IDispose接口
4. myObject = null;
5. GC.Collect();

建议你一般不要这样做,因为频繁的收集垃圾对系统的性能有很大的影响的

#1


dispose

GC

#2


对象的Dispose()方法!

#3


如果按楼上两位说的,代码要改成这样吗?
Class1 myObject=new Class1(); 
myObject.method1(); 
myObject.Dispose();

是这样释放myOject对象吗?Dispose()方法不应该这样用吧。

#4


不光是有Dispose(),还有Finalize()、GC.Collect(),
不过.net有垃圾收集机制,如果不是很有必要,不要使用这些,实际上就算调用了上面三个方法中的前两个,该对象也不一定就马上释放掉了,只不过是把它的垃圾收集的优先级提高了,在下一次收集的时候就会释放掉,而GC.Collect()是立即释放资源(收集垃圾),但不释放指定的资源。

#5


谢谢楼上! 那么您认为下面代码的第三行应该写成什么好呢?谢谢!
1. Class1 myObject=new Class1();  
2. myObject.method1();  
3.

#6


谢谢楼上! 那么您认为下面代码的第三行应该写成什么好呢?谢谢! 
1. Class1 myObject=new Class1();   
2. myObject.method1();   
3.

#7


如果你的对象很大的话,可以先Dispose(),然后GC.Collect()
1. Class1 myObject=new Class1();   
2. myObject.method1();   
3. myObject.Dispose();//前提是你的Class1继承了IDispose接口
4. myObject = null;
5. GC.Collect();

建议你一般不要这样做,因为频繁的收集垃圾对系统的性能有很大的影响的