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

前端之家收集整理的这篇文章主要介绍了c# – 我可以使用带有RHV的语句(右手值)吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用using语句纯粹用于范围管理.我是否可以省略对实现IDisposable的底层对象的显式引用?

例如,给出这个声明:

  1. class ITransactionScope : IDisposable {}
  2. class TransactionGuard : ITransactionScope {...}
  3.  
  4. class DbContext
  5. {
  6. public IDisposable ITransactionScope()
  7. {
  8. return new TransactionGuard();
  9. }
  10. }

我可以做以下事情:

  1. void main()
  2. {
  3. var dbContext = new DbContext();
  4.  
  5. using (dbContext.TransactionScope())
  6. {
  7. // the guard is not accessed here
  8. }
  9. }

在使用语句期间,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#相关文章