zoukankan      html  css  js  c++  java
  • 作业五

          上节课学了第十二章Delegates & Events, 我想简单说说我的收获。Delegate,即委托,用于将事件与其动作和方法关联起来,有点类似于C++中的函数指针。举个简单的创建delegate的例子:

    delegate int Sample(int x, int y)             这里定义了delegate方法、Sample的返回值和签名。        

    class Class2

    {                                                            
          public int method( int x, int y )
          {       return x*y;      }
    }

    class Class1                                              这里是调用delegate的构造方法生成mySample实体
    {
         static void Main(string[] args)
         {
           Class2 instance = new Class2();
           Sample mySample
                  = new Sample(instance.method);
           int result = mySample( 2, 3 );
           Console.WriteLine( result );
         }
    }              

    这是老师ppt中的重点内容,以下是我下课的实践:

    class Program
        {
            static void OtherClassMethod(){
                Console.WriteLine("Delegate an other class's method");
            }
    
            static void Main(string[] args)
            {
                var test = new TestDelegate();
                test.delegateMethod = new TestDelegate.DelegateMethod(test.NonStaticMethod);
                test.delegateMethod += new TestDelegate.DelegateMethod(TestDelegate.StaticMethod);
                test.delegateMethod += Program.OtherClassMethod;
                test.RunDelegateMethods();
            }
        }
    
        class TestDelegate
        {
            public delegate void DelegateMethod();  //声明了一个Delegate Type
    
            public DelegateMethod delegateMethod;   //声明了一个Delegate对象
    
            public static void StaticMethod()   
            {
                Console.WriteLine("Delegate a static method");
            }
    
            public void NonStaticMethod()   
            {
                Console.WriteLine("Delegate a non-static method");
            }
    
            public void RunDelegateMethods()
            {
                if(delegateMethod != null){
                    Console.WriteLine("---------");
                    delegateMethod.Invoke();    
                       Console.WriteLine("---------");
                }
            }
        }
    我自己感觉其与C++中函数指针还是有一定的区别的,主要有三个方面:
    1)一个delegate对象一次可以搭载多个方法(methods),而不是一次一个。
    2)一个delegate对象所搭载的方法并不需要属于同一个类别。
    3)与函数指针不同,委托是面向对象,类型安全并且安全的。
      



      以上是我这次学习的内容,希望老师和大神们多多指教,
  • 相关阅读:
    Java实现提取拼音首字母
    Java实现网格中移动字母
    Java实现网格中移动字母
    Java实现网格中移动字母
    SQL语句:Group By总结
    Maven学习 使用Nexus搭建Maven私服(转)
    CentOS7 搭建Git服务器(转)
    tomcat调优的几个方面(转)
    windows越用越卡怎么办?(转)
    Easyui datagrid行内【添加】、【编辑】、【上移】、【下移】
  • 原文地址:https://www.cnblogs.com/lixuntaohaolihai/p/4442220.html
Copyright © 2011-2022 走看看