gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:06:08 24 4
gpt4 key购买 nike

我想使用 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 实例在 using 语句期间是否存在?

最佳答案

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

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

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

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

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

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

关于c# - 我可以将 using 语句与 RHV(右手值)一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9996496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com