在学习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#,不知道说清楚没。。。
相关推荐:
SEO译为:网站排名背后的优化策略,会展中心网站优化
怎么用AI生成文章免费版,高效创作从此开始!
什么是“神马关键词”?如何用它提升你的网络营销效果?,新闻发布网站怎么做推广
SEO薪资这些,你也能月入过万!,天水网站建设公司
实用AI工具:提升效率、优化生活的科技利器
SEO站群:打造强大网络营销引擎,助力企业快速提升排名与流量,seo网站排名案例
seo要学什么语言,做seo需要什么语言 ,ai martino
SEO选择:如何挑选最合适的SEO优化策略?,wb免费刷粉网站推广
SEO适合-提升网站排名的关键策略,张家口品牌推广营销中心
ChatGPT回答问题,网页无法线下滚动?解决方案轻松get!,谷歌AI铃声
ChatGPT对于大数据发展的帮助:赋能行业变革,推动智能化未来,ai写作真的好吗
为什么“360收录”是你网站推广的必备利器,seo亚马逊
ChatGPT界面看不到用户:隐秘的互动方式与智慧的背后,AI和UR
AI助手推进:智能化时代的企业革命,ai改变图片颜色
OpenAI银行卡扣款的公司是哪家?揭秘背后的支付流程与安全保障,AI素描相片
怎样利用AI写文章,轻松提升写作效率
个性化广告:新时代营销的秘密武器,建设经营性网站怎么记账
seo要什么条件,seo都需要做什么 ,交互ai求职
ChatGPT免登录:轻松畅聊,无需注册,快速体验AI智能助手,眼泪ai
seo跟sem是什么,seo和sem的概念 ,惠威的ai功能
seo的推广工具,seo推广软件哪个好 ,国内ai写作论文怎么样
未来科技:AI工具为生活赋能,打造智能未来
SEO更多-让你的企业站点在搜索引擎中脱颖而出,如何结交seo大神
为什么要seo排名,为什么要做seo推广 ,AI写作开启创意新世界
为什么网站要做seo,网站做seo的目的是什么 ,ai初选
seo矩阵运营中心是什么,seo矩阵运营中心是什么意思啊 ,北京ai特效
打造内容创作新时代:有言AI生成助力创作者释放灵感
SEO而且:打造高效网站流量增长的秘密武器,滨江网站推广营销
ChatGPT网页打不开?快来看看这些解决办法,轻松恢复正常访问!,ai金色包装
seo软件叫什么,seo软件视频教程 ,eps ai 缩略图
pbootcms前端翻译插件-轻松实现网站多语言支持,拓展全球市场,st ai绘画
SEO优化排名:让您的网站在搜索引擎中脱颖而出,我ai 达瓦仓决
AI一键生成原创文章,让创作更高效更轻松!
颠覆写作方式:免费的AI续写软件助你轻松创作
AI一键生成文章免费:革新写作方式,提升创作效率
优化平台:让数字化转型更简单、更高效,莆田谷歌seo品牌排行
AI人工智能生成文章:开启写作新时代
seo用什么法宝,列出5种seo赚钱方式 ,ai怎么更改文档样式
优化服务网-提升客户体验,打造全方位智慧服务平台,东莞网站建设员招聘信息
如何利用AI生成高质量文章,提升写作效率与创意?
SEO优化攻略:如何通过精准策略提升网站排名与流量,aI ow翻译
不利于seo是什么,不属于seo对网店推广的作用 ,ai渐变下载
为什么要做seo si,为什么要做* ,ai里面怎么扣二维码
SEO售产-数字营销新战场,助力企业实现盈利增长,去哪找自贡网站建设
seo经理做什么的,seo经理招聘 ,盲人ai眼镜
一键创作,助你轻松实现创意梦想,最低价刷粉网站推广
GPT-3.5免费吗?揭秘AI智能助手的未来与收费模式,ai 美美
seo网站通过什么软件,网站seo软件哪个 ,战团ai
SEO观察:2025年搜索引擎优化的新趋势与机遇,seo2是什么状态
SEO如何做?全方位解析提升网站排名的秘诀,AI翻译好处