gpt4 book ai didi

c# - Action和事件Action有什么区别

转载 作者:行者123 更新时间:2023-12-02 20:07:38 24 4
gpt4 key购买 nike

阅读一些代码我注意到一些类有 Action ,但只有一些也是事件:

public Action OnAction1;
public event Action OnAction2;

有什么区别?

最佳答案

它实际上与字段和属性之间的区别相同,它增加了一个间接级别,允许您安全地添加或删除订阅者,而无需像属性保护对字段值的访问一样公开底层字段。

public Action OnAction1; // field
public Action OnAction2 { get; set; } // property
public event Action OnAction3; // event

与属性一样,事件可以“自动实现”,这意味着有一个为您生成的底层支持字段。

就像属性可以有明确的 getter 和 setter 一样:

private Action onAction2;
public Action OnAction2
{
get
{
return onAction2;
}
set
{
onAction2 = value;
}
}

事件可以有明确的添加和删除处理程序:

private Action onAction3;
public event Action OnAction3
{
add
{
onAction3 += value;
}
remove
{
onAction3 -= value;
}
}

外部类无法通过 OnAction3 事件直接访问底层 onAction3 字段,就像您无法直接访问 onAction2 字段一样通过 OnAction2 属性。

当然,通过显式实现这些访问器,您还可以执行其他操作,例如值验证或转换。

关于c# - Action和事件Action有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54299834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com