实例为null后,如何访问Instance方法委托

时间:2015-08-17 14:55:47

标签: c# .net

实例设置为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'完成。

2 个答案:

答案 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实例的活动引用,所以它不会被垃圾回收。