加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 我可以使用带有RHV的语句(右手值)吗?

发布时间:2020-12-15 04:06:56 所属栏目:百科 来源:网络整理
导读:我想使用using语句纯粹用于范围管理.我是否可以省略对实现IDisposable的底层对象的显式引用? 例如,给出这个声明: class ITransactionScope : IDisposable {}class TransactionGuard : ITransactionScope {...}class DbContext{ public IDisposable ITransa
我想使用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
    }
}

在使用语句期间,TransactionGuard实例是否存在?

解决方法

I want to use the using statement purely for scope management.

您应该使用using语句来实现它的目的:及时处理非托管资源.如果那不是您正在使用的,那么您可能做错了什么.

Can I omit holding an explicit reference to the underlying object that implements IDisposable?

正如另一个答案所指出的那样:你已经输入了代码;你可以简单地尝试一下.

是的,你可以这样做.编译器将为您创建一个不可见的局部变量,并在其上调用Dispose.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读