我刚开始从文档中学习C#7.0.我了解到Class是一种引用类型.但是,方法如何返回对已经销毁的对象的引用.
using System;
using System.Collections.Generic;
namespace ConsoleApp1
{
public class Program
{
public static void Main()
{
Test b = GetObj();
Console.WriteLine(b.val);
Console.ReadLine();
}
public class Test
{
public int val;
}
public static Test GetObj()
{
Test t = new Test();
t.val = 100;
return t;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里,方法GetObj创建一个Test对象,并返回它.根据文档,仅返回对它的引用.因此在函数调用之后,t应该将其作为垃圾收集,因此b不应该引用任何内容.
但代码仍然打印出来100.为什么?
所以在函数调用之后,"t"应该被收集为垃圾,所以"b"应该什么都不引用.
否.垃圾收集器知道有多少变量仍在引用该实例,因此根本不会收集垃圾.当没有变量引用该实例时,垃圾收集器将启动.
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |