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

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

概述我想使用using语句纯粹用于范围管理.我是否可以省略对实现IDisposable的底层对象的显式引用? 例如,给出这个声明: class ITransactionScope : IDisposable {}class TransactionGuard : ITransactionScope {...}class DbContext{ public IDisposable ITra 我想使用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节.

总结

以上是内存溢出为你收集整理的c# – 我可以使用带有RHV的语句(右手值)吗?全部内容,希望文章能够帮你解决c# – 我可以使用带有RHV的语句(右手值)吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1262055.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存