You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

理解Action<int>订阅:+=运算符的作用是什么?

问题解答

你的猜测完全正确:当Count变量发生变化时,CountChanged这个Action会被触发,同时把新的Count值作为参数传递给所有订阅它的委托逻辑。这里你没用到newCount参数只是因为当前场景只需要触发Blazor组件的状态更新(StateHasChanged()),不影响订阅本身的有效性。

关于+=的作用,得从C#委托的特性说起:

  • Action<int>本质是泛型委托类型,委托支持多播——也就是一个委托实例可以绑定多个方法或匿名函数。
  • +=操作符的核心作用就是给CountChanged委托添加一个新的订阅者:把后面的匿名函数(newCount) => this.StateHasChanged()注册到委托的调用链中。
  • 当CountChanged被调用(通常是在Count属性的setter里执行CountChanged?.Invoke(newCount))时,所有通过+=绑定的逻辑都会被依次执行。

举个实际场景的例子,如果你之后想在Count变化时同时打日志,直接再加一行订阅代码就行:

this.data.CountChanged += (newCount) => Console.WriteLine($"Count已更新为:{newCount}");

这样每次Count变动,会先触发组件状态更新,再输出日志,这就是委托多播的优势。

最后提醒一句:在Blazor组件里,订阅外部对象的事件后,记得在组件销毁时用-=取消订阅,避免内存泄漏:

protected override void OnDispose()
{
    this.data.CountChanged -= (newCount) => this.StateHasChanged();
    base.OnDispose();
}

内容的提问来源于stack exchange,提问作者Musaffar Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 12:45:36