没有引用它的变量时的对象处理

问题描述 投票:-4回答:1

我有这个代码:

Method1(Method2());

但是,Method2返回需要处理的对象。这是我如何处理这个:

using (var x = Method2())
{
    await Method1(x);
}

Method1和Method2属于框架,我不应该更改它们。

我有很多这样的案件。例如,Method2创建HTTP请求,Methid1发送它。

同样,这两种方法都属于我无法改变的库。

我知道如果我不处理对象,垃圾收集器最终会这样做。可能不会很快。我在游荡,如果没有任何引用该对象的变量(因为它将在Method1返回后),我可以指望垃圾收集器立即处理该对象,因此可以使用原始选项短。

c# dispose idisposable
1个回答
2
投票

使用using语句,就像你已经表明的那样,是的,它是优雅的方式

using (var something = Method2())
{
   Method1(something);
}

或者如果你愿意的话

using (var something = Method2())
   Method1(something);

其他任何东西都是不寻常和令人困惑的(即将它放在你的方法1中)......正如评论所指出的,除非这是某种命令/查询服务,或其他可以注入一次性范围的依赖关系

此外,在任何事情上调用wait这些天都是可疑的

© www.soinside.com 2019 - 2024. All rights reserved.