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)与函数指针不同,委托是面向对象,类型安全并且安全的。
      



      以上是我这次学习的内容,希望老师和大神们多多指教,
  • 相关阅读:
    shell中标准输出,标准输入,标准错误输出详解
    shell 脚本 编辑颜色代码
    Docker容器:磁盘&内存&CPU资源限制实战
    Linux crontab 详解
    vsftp虚拟用户
    学习kail linux 几个不错的网站
    多线程协作方法sleep、yield、wait、join和同步和安全等问题
    Redis 命令参考
    JVM的内存区域划分(网上找的)
    工业软硬件系统名词
  • 原文地址:https://www.cnblogs.com/lixuntaohaolihai/p/4442220.html
Copyright © 2011-2022 走看看