【发布时间】:2009-03-12 10:32:39
【问题描述】:
假设我有以下 C# 代码:
Action a = TestMethod;
Action b = TestMethod;
Action c = b;
b += a;
Tests 表明b 与c 不是同一个实例,因此很明显+ 运算符似乎创建了一个新的委托实例。这是一个正确的假设吗?它是在内部重用b-instance,还是只是将方法/目标信息复制到新实例?
我似乎无法为代表找到 + 运算符的实现,Delegate 类似乎不包含它。
谁能解释一下这个问题?
我问的原因是我正在创建一些类,它们会像洋葱一样相互分层,最外层将调用内层,获取一些委托,然后将更多方法附加到这些委托,我'我只是担心这样做会以某种方式改变我从内层获得的委托,在这种情况下,我需要返回副本/克隆,而不仅仅是内部引用。
请注意,这完全是我的库的内部代码,所以虽然我知道传递这样的内部数据结构通常是个坏主意,但如果我可以安全地使用这些类,那么我会这样做。
【问题讨论】:
标签: c# .net delegates chaining instances