假设我有以下 C# 代码:
Action a = TestMethod;
Action b = TestMethod;
Action c = b;
b += a;
测试表明 与b
不是同一个实例c
,因此显然+
操作员似乎创建了委托的新实例。这是一个正确的假设吗?它是在b
内部重用 -instance,还是只是将方法/目标信息复制到新实例?
我似乎无法找到+
代表运算符的实现,Delegate 类似乎不包含它。
任何人都可以对这个问题有所了解吗?
我问的原因是我正在创建一些类,它们会像洋葱一样将自己分层,最外层将调用内层,获取一些委托,然后将更多方法附加到这些委托,我只是担心这样做会以某种方式改变我从内层获得的委托,在这种情况下,我需要返回副本/克隆,而不仅仅是内部引用。
请注意,这完全是我的库的内部代码,所以虽然我知道传递这样的内部数据结构通常是一个坏主意,但如果我可以安全地使用这些类,那么我会这样做。