c# - 如果对象是在 using 语句中创建的且未显式绑定(bind)到引用,则该对象是否符合垃圾回收条件?

标签 c# .net using-statement

我有这个(仅供说明)C# 代码:

using( new System.IO.MemoryStream() ) {
    System.Threading.Thread.Sleep(1000);
}

请注意,此处创建了一个 MemoryStream,但未明确绑定(bind)到引用。因此,除非因为 using 语句而有一些特殊处理,否则对象没有对它的引用,并且可以在控制离开 using 语句之前甚至可能在 Sleep 之前收集() 完成。

在控制离开 using 语句之前,MemoryStream 是否符合收集条件?

最佳答案

没有。

using 语句编译成一个 finally block 来处理对象。

因此,它仍然在范围内,直到 block 结束。

关于c# - 如果对象是在 using 语句中创建的且未显式绑定(bind)到引用,则该对象是否符合垃圾回收条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16216765/

相关文章:

c# - List<T>.ForEach() 使用 Async 有什么意义吗?

c# - UserPrincipal.GetAuthorizationGroups() 很慢

C# Regex 使用 newLine 在两个字符串之间查找字符串

c# - 在 using 语句中使用 null IDisposable 值

c# - 从同一个类中引用类中的变量

c# - 使用 webdriver 从 javascript 警报获取文本元素

c# - 什么时候处置?

c# - 我应该使用 using 语句来创建 Windows.Forms.Form 对象吗?

c# - 更好的重载构造函数设计?

.net - 使用 .NET 属性的最佳做法是什么?