C#中事件只能在内部调用的原因是什么
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,本篇内容主要讲解"C#中事件只能在内部调用的原因是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C#中事件只能在内部调用的原因是什么"吧!在学习C#中
千家信息网最后更新 2025年11月10日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安全错误
数据库的锁怎样保障安全
内网直播服务器方案
美国的数据库外包服务
数据库物理文件
华三服务器管理口用户名
网络安全部队班会
P安卓UBG哪个服务器快
服务器的辐射是多大
jsp怎么读取数据库
安阳华易网络技术有限公司
妆点服务器繁忙
初中网络安全主题班会教案
dm数据库连接qt
智能设备软件开发培训班
软件开发公司需要多少人
无建立与该服务器的安全连接
安卓软件开发声明变量
梦幻牡丹亭服务器还行么
软件开发预案
网络安全 与西方交往
软件开发工作有用吗
网络安全法修订历程
wind数据库启动
青浦区品质软件开发怎么样
网络技术职称有哪些
网络安全的小
电影网站 服务器
马鞍山智能化浪潮服务器
广东常用软件开发报价表
餐饮软件开发联系方式
当今软件开发什么特点