gpt4 book ai didi

c# - 处置 x 关闭

转载 作者:行者123 更新时间:2023-12-03 02:00:13 27 4
gpt4 key购买 nike

在总体情况下,Close 方法在语义上只是更改对象的状态,而该对象可以使用 Open 方法无限期地再次更改。

另一方面,IDisposable.Dispose() 方法的语义将对象置于无法撤消的状态。

那么,为什么有关“close x dispose”的几个答案甚至 MSDN 模式都显示 Close 方法调用 Dispose?

最佳答案

.NET 框架本身存在很多摩擦。然而,实现始终如一,毫不奇怪,类的 Close() 方法总是调用其 Dispose() 方法。

从逻辑上讲,它总是意味着完全相同的事情。您在代码中明确地说“我不再使用这个对象”。当然,Close() 与 Dispose() 的含义完全相同。它们的意思完全相同,“我已经不再使用它了”。因此,当然这些方法的实现会做完全相同的事情。

但从语义上来说,它并不表示同一件事。最重要的是 using 语句。

您最好永远不要显式调用Dispose()。唯一应该出现在您的代码中的地方是您自己的 IDisposable 实现。当您的类中有自己实现 IDisposable 的成员时,您需要实现它。这迫使您自己实现 IDisposable,您只需通过调用成员的 Dispose 方法即可实现它。

这是您唯一使用过它的地方。在任何其他用法中,您可以将其留给方法内的 using 语句来自动为您调用 Dispose()。对于您不想立即处理的极端情况,您可能需要在方法调用之外保留该对象。这就是您使用 Close() 方法的时候。

关于c# - 处置 x 关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22823924/

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