事件与信托的区分,九九乘法表

2019-08-17 15:50 来源:未知

For循环案例---九九乘法表,for案例---乘法

概述:先创建一个Print99类,类中创建5个方法,分别为Test9901、Test9902、Test9903、Test9904、Test9905,分别打印出不同形状的九九乘法表,该类创建完成后再创建一个Test99类,其中包含主方法,并在其中调用Print99类中的五个方法。

www.weide1946.com 1

www.weide1946.com 2

 

概述:先创建一个Print99类,类中创建5个方法,分别为Test9901、Test9902、Test9903、Test9904、Test9905,分...

概述:先创建一个Print99类,类中创建5个方法,分别为Test9901、Test9902、Test9903、Test9904、Test9905,分别打印出不同形状的九九乘法表,该类创建完成后再创建一个Test99类,其中包含主方法,并在其中调用Print99类中的五个方法。

C# 事件与委托的区别

先看一段程序

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. Test obj = new Test();
  6. obj.print = printout1; //绑定printout1方法
  7. obj.print = printout2; //绑定printout2方法
  8. obj.start();
  9. }
    1. static void printout1()
  10. {
  11. Console.WriteLine("输出第一段字符串");
  12. }
    1. static void printout2()
  13. {
  14. Console.WriteLine("输出第二段字符串");
  15. }
  16. }
    1. public delegate void Print(); //创建委托
    1. class Test
  17. {
  18. public event Print print; //创建事件实例
    1. public void start()
  19. {
  20. print(); //触发事件
  21. }
  22. }

上面的代码使用的是标准的事件委托格式,现在我将其中的event关键字去掉,你会发现程序依然可以正常的运行,不会出现任何的问题。

www.weide1946.com 3

事件实际上是一个特殊的委托实例,不用事件也没有关系。实际上事件只是削弱了委托的功能,event在编译器角度保护了你程序的安全,因为你只能使用 =、-= 来注册事件了,而不能使用 = 为事件关联方法。(在委托中还可以使用=来绑定方法,不过=是一种破坏性代码,不管之前是否已经绑定的有方法了,他都会将其清除)

例子:将上面的代码为事件绑定方法的部分中的 = 换成 = 编译器就会报错

`www.weide1946.com,`

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. Test obj = new Test();
  6. obj.print = printout1; //绑定printout1方法时出错
  7. obj.start(); //事件不能使用等号运算符绑定方法
  8. }
    1. static void printout1()
  9. {
  10. Console.WriteLine("输出第一段字符串");
  11. }
  12. }
    1. public delegate void Print(); //创建委托
    1. class Test
  13. {
  14. public event Print print; //创建事件实例
    1. public void start()
  15. {
  16. print(); //触发事件
  17. }
  18. }

错误提示

www.weide1946.com 4

www.weide1946.com 5

 

版权声明:本文由韦德娱乐1946_韦德娱乐1946网页版|韦德国际1946官网发布于网络编程,转载请注明出处:事件与信托的区分,九九乘法表