相关疑难解决方法(0)

将对象设置为null vs Dispose()

我对CLR和GC的工作方式很着迷(我正在通过C#,Jon Skeet的书籍/帖子等阅读CLR来扩展我的知识).

无论如何,说:有什么区别:

MyClass myclass = new MyClass();
myclass = null;
Run Code Online (Sandbox Code Playgroud)

或者,通过使MyClass实现IDisposable和析构函数并调用Dispose()?

另外,如果我有一个带有using语句的代码块(例如下面的代码),如果我单步执行代码并退出using块,那么对象是在处理垃圾收集时发生的吗?如果我在使用块中调用Dispose()会发生什么?

using (MyDisposableObj mydispobj = new MyDisposableObj())
{

}
Run Code Online (Sandbox Code Playgroud)

流类(例如BinaryWriter)有一个Finalize方法吗?我为什么要用它?

.net c# disposable

107
推荐指数
3
解决办法
5万
查看次数

using语句 - 是否会触发垃圾回收?

我想做的是将一些可能泄漏的可疑函数包装在using语句中以触发垃圾回收,是否有人使用过或看过这样的东西?这有用吗?你对此有什么看法?

using (String wrapper = new String("maybe this will trigger gc")){
  //do stuff here
  //or maybe:
  // function1();
  // function2();
  //
  //and then see if its leaking?

  // eg:
       _mygeometry = new Geometry();
       _mygeometry = null; // will GC free this ?
}
Run Code Online (Sandbox Code Playgroud)

你认为这会奏效吗?你之前用过这个吗?有什么我可以做的不是一个字符串?我使用WPF,我尝试使用(var garbage = 1){}并且不起作用,我想String可能会.

c# memory

0
推荐指数
1
解决办法
2449
查看次数

标签 统计

c# ×2

.net ×1

disposable ×1

memory ×1