有一些静态方法,比如Process.Start()
和File.Create()
会构造并返回IDisposable
实例,但这些实例通常被丢弃。我们很容易使用这些方法,就好像它们返回了void
一样,如果你不注意,你可能会错过它们实际上有返回值的事实。
我知道最佳实践是始终处理IDisposable
实例。那么未使用的返回值是否也适用呢?你应该总是写Process.Start(processPath).Dispose();
而不是Process.Start(processPath);
吗?
我认为这显然是肯定的,但我必须反复思考自己,因为我只看到这样做时没有Dispose()
。C#也许有一些自动处理这些情况的方式吗?
Process.Start(processPath).Dispose()
,而应该使用using(var p = Process.Start(processPath)) {}
。可能会出现Start
抛出异常的情况,在这种情况下,后一种方法将确保其被正确处理。 - Tim Schmelter