C#中事件只能在内部调用的原因是什么
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"C#中事件只能在内部调用的原因是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C#中事件只能在内部调用的原因是什么"吧!在学习C#中
千家信息网最后更新 2026年11月02日C#中事件只能在内部调用的原因是什么
本篇内容主要讲解"C#中事件只能在内部调用的原因是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C#中事件只能在内部调用的原因是什么"吧!
在学习C#中委托和事件时,产生一个疑问,类中定义的事件在类内部可以直接调用,而在类外部,事件却只能添加或移除委托方法
比如下面这段代码,类Customer中定义了一个委托 Order ,Customer内部可以直接调用 Order.Invoke()
public class Customer { // 定义事件 public event OrderEventHandler Order; public string? name; public float? price; protected void onOrder(OrderEventArgs orderEventArgs) { if(Order != null) { Order.Invoke(this, orderEventArgs); } } ......而在类的外部,只能添加或移除委托方法,不能调用Order.Invoke(),下面代码中customer.Order.Invoke()会报错。
public class Program{ public static void Main(string[] args) { var customer = new Customer(); customer.name = "1"; Waiter waiter = new Waiter(); customer.Order += waiter.Serve; // customer.Order.Invoke() 这样写无法编译 customer.Think(); customer.Pay(); } }细看刘铁猛老师的《C#入门详解》后,才明白原来这是C#语法糖让我产生的误解,在定义事件时,
下面这行代码是常见的定义方式,这是一种简明的定义方法
// 事件的简明定义方式public event OrderEventHandler Order;而C#中事件完整的定义方式是这样: private OrderEventHandler orderEventHandler;//委托,使用private 修饰 public event OrderEventHandler Order // 事件,对委托方法进行增减 { add { this.orderEventHandler += value; } remove { this.orderEventHandler -= value; } }使用完整写法定义事件后,在内部调用也不能用事件Order去调用了,要用委托去调用
protected void onOrder(OrderEventArgs orderEventArgs) { if(this.orderEventHandler != null) { // 调用委托 this.orderEventHandler.Invoke(this, orderEventArgs); } }可以看到,我们真正调用的委托使用private修饰,是私有的,所以只能在内部调用,而事件(event)则是对私有的委托进行了包装,实现对委托方法的增加或移除。
到此,相信大家对"C#中事件只能在内部调用的原因是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
事件
委托
C#
方法
原因
代码
方式
学习
简明
内容
这是
私有
实用
更深
中委
兴趣
写法
委托方
实用性
实际
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
云南咖啡
博彦科技互联网金融
互联网电商科技
互联网科技公司税收优惠
互联网科技论文
郑州华宇互联网科技
太原新华互联网科技学校怎么样
科技赋能互联网健康
创业天下互联网科技有限公司
移动互联网科技股
中化能源互联网科技招聘
互联网科技与管理
互联网金融中的现代科技
佛山市翊博互联网络科技有限公司
互联网第三次科技革命特征
广州梦谷互联网科技有限公司领导
湖北辰鑫科技互联网
互联网公司属于科技吗
恒生科技指数 中概互联网
伍佰万互联网科技是干嘛的
百单网互联网科技有限公司
云之行互联网科技
苏州大垚互联网科技
重庆科技学院互联网
须眉科技是互联网公司吗
互联网科技有哪些公司
智腾互联网科技有限公司
华中科技大学互联网的牛人
国大互联网教育科技有限公司薪资
国产互联网科技公司