在 .NET 中,为什么事件连接顺序如此重要?
using System;
static class Program
{
static event Action A = delegate { };
static event Action B = delegate { };
static void Main()
{
A += B;
B += ()=>Console.WriteLine("yeah");
A.Invoke();
}
}
这不会打印任何内容,但如果我交换 Main 的前两行,它就会打印任何内容。
using System;
static class Program
{
static event Action A = delegate { };
static event Action B = delegate { };
static void Main()
{
A += B;
B += ()=>Console.WriteLine("yeah");
A.Invoke();
}
}
This doesn't print anything, but if I swap the first two lines of Main, it does.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
事件是不可变的,即在赋值时你会得到一个副本,就像整数一样
Events are immutable, i.e. you get a copy when assigning, like integers
A+=B;正在将 B 的代表列表追加到 A 中。
它是复制 B 的内容,而不是对 B 的引用。
它等同于:
所以顺序肯定很重要。
A += B; is appending the list of delegates from B into A.
It is copying the contents of B, not a reference to B.
It is the same as:
So the order is definitely important.