在学习C#中委托和事件时,产生一个疑问,类中定义的事件在类内部可以直接调用,而在类外部,事件却只能添加或移除委托方法 比如下面这段代码,类Customer中定义了一个委托 Order
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);
}
}
......
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();
}
}
// 事件的简明定义方式
public event OrderEventHandler Order;
而C#中事件完整的定义方式是这样:
private OrderEventHandler orderEventHandler;//委托,使用private 修饰
public event OrderEventHandler Order // 事件,对委托方法进行增减
{
add
{
this.orderEventHandler += value;
}
remove
{
this.orderEventHandler -= value;
}
}
protected void onOrder(OrderEventArgs orderEventArgs)
{
if(this.orderEventHandler != null)
{
// 调用委托
this.orderEventHandler.Invoke(this, orderEventArgs);
}
}
到此这篇关于C#中事件为什么只能在内部调用的文章就介绍到这了,更多相关C#事件内部调用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: C#中事件只能在内部调用的原因分析
本文链接: https://www.lsjlt.com/news/158447.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0