111,129
社区成员
发帖
与我相关
我的任务
分享
public delegate void EventHandle(object a,object b);
Hashtable tests = new Hashtable();
void justTest()
{
EventHandle tmp = new EventHandle (xx1);
tests["a"] = tmp;
addHandel (xx2);
var han = (EventHandle)tests["a"];
han (4, 5);
}
public void addHandel (EventHandle h)
{
var han = (EventHandle)tests["a"];
var hanCopy = han;
han += h;
if (han != hanCopy)//true
{
Debug.Log ("not equal ");
}
tests ["a"] = han;//添加了这一句
}
var x = new Team();
x = x + new Person();这时候变量 x 还是引用同一个 Team 吗?
变量 han 本来就是是一个变量而已,它就是用来引用不同对象的。你声明 han 变量本来就是用来引用“一串”委托链条的。
delegate 关键字所声明的 Delegate,它既可能是一个基础的 Delegate,也可能是一个 MulticastDelegate(这也是 Delegate)。han 总是引用这个链条,你写了代码han += ......自然就是对 han 变量重新赋值了(应用到别的对象了)。
这就是一个很普通的要理解的流程问题。