gpt4 book ai didi

c# - 自动处理对象

转载 作者:太空狗 更新时间:2023-10-29 22:08:23 26 4
gpt4 key购买 nike

比如我有一个方法

SomeMethod(Graphics g)
{
...
}

如果我将以某种方式调用这个方法

SomeMethod(new Graphics())

我的图形对象会被自动处理还是我应该在方法结束时手动调用 g.Dispose()

SomeMethod(Graphics g)
{
...
g.Dispose();
}

最佳答案

一次性对象不会被自动处置(它们最接近的是实现一个在必要时调用 Dispose 的终结器)。您必须通过调用 Dispose() 或将其与 using block 一起使用来手动执行此操作。

如果你想自动处理对象,你可以这样做:

using (var g = new Graphics()) {
SomeMethod(g);
}

using block 确保 Dispose() 方法在 block 结束时自动调用(所以在这种情况下,在 SomeMethod 返回或抛出异常之后) .

注意:如果可能,您应该将对象放置在靠近创建它的位置。接受一个有效的对象并在方法中处理它可能会引起混淆。

图形和大多数(如果不是全部)实现此接口(interface)的 BCL 类也将在调用终结器时调用 Dispose()。这是 IDisposable 正确实现的一部分。但是,您永远不知道终结器何时被调用,如果您需要确定性地处理对象,则不应依赖此实现细节。

关于c# - 自动处理对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10101778/

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