实例设置为null后,实例委托方法如何仍然可访问?下面的代码中的操作委托指向实例方法,但在将实例设置为null后,该方法仍然可用。
List<Dictionary<int, int[]>> globalList = new List<Dictionary<int, int[]>>();
// list contains a map for [water mark pixel, {matching cover image pixel, best match value}] for each watermark
输出
目标工作人员是空的?假
'任务1'完成。
答案 0 :(得分:5)
你的误解在于:
// the instance is now null.
不是。您刚刚将变量 worker
更改为指向null
。这不会以某种方式销毁或取消 Worker
的实例。
也许阅读哪些变量,对象和引用会有所帮助。不久前还有一个问题:What is the difference between a variable, object, and reference?
答案 1 :(得分:3)
委托包含对要调用它的实例的引用。这一行:
var batchWorker = new BatchWorker(worker.Do);
创建worker
的{{1}}的第二个引用,该引用存储在Worker
的{{1}}操作中。因为仍然存在对BatchWorker
实例的活动引用,所以它不会被垃圾回收。