我可以将using语句与RHV(右手值)一起使用吗

本文关键字:一起 右手 using 语句 RHV 我可以 | 更新日期: 2023-09-27 18:29:57

我想将using语句纯粹用于范围管理。我可以省略对实现IDisposable的底层对象的显式引用吗?

例如,给出以下声明:

class ITransactionScope : IDisposable {}
class TransactionGuard : ITransactionScope {...}
class DbContext
{
    public IDisposable ITransactionScope()
    {
        return new TransactionGuard();
    } 
}

我可以做以下事情吗:

void main()
{
    var dbContext = new DbContext();
    using (dbContext.TransactionScope())
    {
        // the guard is not accessed here
    }
}

using语句期间TransactionGuard实例是否处于活动状态?

我可以将using语句与RHV(右手值)一起使用吗

我想将using语句纯粹用于范围管理。

您应该将using语句用于它的设计目的:及时处置非托管资源。如果这不是你使用using的目的,那么你可能做错了什么。

我可以省略对实现IDisposable的底层对象的显式引用吗?

正如另一个答案所指出的:你已经输入了代码;你可以试一下。

是的,你可以做到。编译器将为您创建一个不可见的局部变量,并对其调用Dispose

如果您对using的使用有进一步的疑问,我建议您阅读C#4规范的8.13节。

在你处理掉它之前,它是活着的。

只需点击编译和运行按钮,就可以更容易地回答这类问题。你已经键入了代码。试试看。