没有变量引用时的对象处理
Object disposal when there is no variable referencing it
我有这个代码:
Method1(Method2());
但是,Method2 returns 一个对象需要被释放。以下是我的处理方法:
using (var x = Method2())
{
await Method1(x);
}
Method1和Method2属于framework,我改不了
我有很多这样的案例。例如,Method2 创建 HTTP 请求,Methid1 发送它。
同样,这两种方法都属于我无法更改的库。
我知道如果我不处理对象,垃圾收集器最终会这样做。可能不会很快。
我在徘徊,如果万一没有任何变量引用该对象(因为它将在 Method1 returns 之后),我可以指望垃圾收集器立即处理该对象,这样就可以了使用原始的短选项。
使用 using
语句,就像你展示的那样,是的,这是优雅的方式
using (var something = Method2())
{
Method1(something);
}
或者如果你愿意
using (var something = Method2())
Method1(something);
其他任何事情都会不寻常且令人困惑(即在您的方法 1 中处理它)...正如评论所指出的,除非这是某种 Command/Query 服务或其他可以注入的依赖项带有一次性瞄准镜
此外,最近打电话给 wait
任何事情都是可疑的
我有这个代码:
Method1(Method2());
但是,Method2 returns 一个对象需要被释放。以下是我的处理方法:
using (var x = Method2())
{
await Method1(x);
}
Method1和Method2属于framework,我改不了
我有很多这样的案例。例如,Method2 创建 HTTP 请求,Methid1 发送它。
同样,这两种方法都属于我无法更改的库。
我知道如果我不处理对象,垃圾收集器最终会这样做。可能不会很快。 我在徘徊,如果万一没有任何变量引用该对象(因为它将在 Method1 returns 之后),我可以指望垃圾收集器立即处理该对象,这样就可以了使用原始的短选项。
使用 using
语句,就像你展示的那样,是的,这是优雅的方式
using (var something = Method2())
{
Method1(something);
}
或者如果你愿意
using (var something = Method2())
Method1(something);
其他任何事情都会不寻常且令人困惑(即在您的方法 1 中处理它)...正如评论所指出的,除非这是某种 Command/Query 服务或其他可以注入的依赖项带有一次性瞄准镜
此外,最近打电话给 wait
任何事情都是可疑的