在C#中,
假设我有以下代码:
class Process
继承自class Component
,后者实现了IDisposable
接口,因此我可以在任何Process
对象上调用Dispose()
方法。我真的必须这样做吗?我如何知道是否真的需要这样做?假设我有以下代码:
var allProcesses = System.Diagnostics.Process.GetProcesses();
var processesNames = processes.Select( p => p.ProcessName );
// output process names here
现在看起来我有一个Process
对象数组,我需要编写一个try-finally
来遍历整个数组并且对每个对象调用Dispose()
方法。这显然会增加很多冗余代码。
Dispose()
方法对Process
对象有什么作用?我是否确实需要为每个Process
对象都调用Dispose()
方法?如果需要,我该如何判断?
using (IEnumerable<IDisposable> ...)
:) - eFlohusing
语句引入了一个新变量和一个作用域,在该作用域中将使用该变量。因此,虽然using
只能用于可处理对象,但几乎总是要利用它们在该作用域内的“非一次性”方面。 - Damien_The_UnbelieverCloseHandle
:“关闭进程句柄不会终止关联的进程或删除进程对象。要删除线程对象……” - Damien_The_Unbeliever