C# 为什么对象ref1在Console.WriteLine(ref1)之后准备好进行GC?

C# 为什么对象ref1在Console.WriteLine(ref1)之后准备好进行GC?,c#,stack,heap,C#,Stack,Heap,简而言之,我开始阅读c#5.0 现在我在堆栈和堆章节 下面是GC如何处理堆对象的示例: StringBuilder ref1 = new StringBuilder ("object1"); Console.WriteLine (ref1); // The StringBuilder referenced by ref1 is now eligible for GC. 所以,作者说ref1对象在Console.WriteLine之后就可以进行GC了,但如果我想在以后的程序中使用ref1对象呢

简而言之,我开始阅读c#5.0 现在我在堆栈和堆章节 下面是GC如何处理堆对象的示例:

StringBuilder ref1 = new StringBuilder ("object1");
Console.WriteLine (ref1);
// The StringBuilder referenced by ref1 is now eligible for GC.

所以,作者说ref1对象在Console.WriteLine之后就可以进行GC了,但如果我想在以后的程序中使用ref1对象呢

编译器知道没有指向ref1的链接,因此将其标记为未使用。若您想再次使用ref1,编译器就会知道这一点并使其保持活动状态。
里克特有一本好书:“.NETCLR通过C#”。他在书中解释了很多,编译器知道没有参考文献1的链接,所以它将其标记为未使用。若您想再次使用ref1,编译器就会知道这一点并使其保持活动状态。
里克特有一本好书:“.NETCLR通过C#”。他在书中解释了很多,只要你使用了对某个对象的引用,它就没有资格被收集。该示例的要点是表明,由于代码不再访问
ref1
,因此可以在此之后的任何时间收集对象

只要您使用对对象的引用,它就不符合收集条件。该示例的要点是表明,由于代码不再访问
ref1
,因此可以在此之后的任何时间收集对象

那么它就不符合GC的条件。大概是因为它是1)程序的最后一行和/或
ref1
的最后一次使用。那么它就不符合GC的条件。大概是因为它是1)程序的最后一行和/或
ref1
的最后一次使用。是的,这就是我在开始时所想的,但我只是想看看这是不是什么新东西,我还不知道。谢谢,这就是我在开始时的想法,但我只是决定检查它是否是我还不知道的新东西。谢谢