为什么'public'访问修饰符与事件Action委托使用,总是表现为'私有'

时间:2014-10-03 10:12:39

标签: c# delegates action

public class Pub
{
    public event Action OnChange = delegate {};

    public void Raise()
    {
        OnChange();
    }
}

这是C#中编程的1-83 作者写道: '另一个变化是没有外部用户可以举起你的活动。它只能通过代码定义事件的类的代码来引发。'

如果是这种情况,你不应该使用私人修饰语来提高清晰度吗?

1 个答案:

答案 0 :(得分:3)

事件标记为public这一事实意味着它可以订阅公开 - 任何人都可以添加Action委托,并在事件触发时调用。如果您标记了事件private,那么您只能在课程中订阅它。 (protected:仅来自类或其继承者internal:仅来自程序集内部等等。)

事件始终只能从类中触发,就像“触发此事件”方法标记为private一样。这不受事件的实际访问修饰符的影响。