gpt4 book ai didi

c# - 是否应该让 IDisposable.Dispose() 安全地多次调用?

转载 作者:IT王子 更新时间:2023-10-29 03:58:36 26 4
gpt4 key购买 nike

IDisposable 的实现是否应该使 Dispose() 可以安全地多次调用?或者相反?大多数 .NET Framework 类采用什么方法?

具体来说,多次调用 System.Data.Linq.DataContext.Dispose() 是否安全?

我问的原因是因为我想知道是否需要这种额外的保护:

public override void Dispose(bool disposing)
{
// Extra protection...
if (this.obj != null)
{
this.obj.Dispose();
this.obj = null;
}

// Versus simply...
this.obj.Dispose();

base.Dispose(disposing);
}

当处置一个类的 IDisposable 成员时,或者我是否应该只调用 this.obj.Dispose() 而不必担心它之前是否被调用过。

最佳答案

你应该安全地调用它不止一次,但如果可以的话你应该避免它。

来自 IDisposable.Dispose() 上的 MSDN 页面:

If an object's Dispose method is called more than once, the object must ignore all calls after the first one. The object must not throw an exception if its Dispose method is called multiple times.

关于c# - 是否应该让 IDisposable.Dispose() 安全地多次调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5306860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com