zoukankan      html  css  js  c++  java
  • 关于c#委托的几点

    1.什么时候用委托:
    当给一个方法传递的参数是方法,而不是数据的时候,要使用委托。如:多线程、事件、运行时才能确认的应用程序等。

    2.如何使用委托:
    定义委托:(与类相同)delegate string GetAString();
    实例化:GetAString testString=new GetAString("test".ToString());
    运行: Console.Write(testString());
    类图:
    System.Delegate
    |
    System.MulticastDelegate
    |
    GetAString

    3.如何理解委托:
    可把委托看做给方法签名指定的名称。如:
    delegate string GetAString();
    返回类型为string,无参数的方法的签名的名字为GetAString.

    4.委托的作用:
    类似于c/c++的回调函数(函数指针).但c中这个指针是什么(只是个存储地址),参数及返回类型是什么都是未知,类型不安全。而委托是类型安全的,因为它规定了方法的签名。

    5.多播委托:
    包含多个方法的委托,叫多播委托。返回类型为void,c#编译器遇到返回类型为void的委托,即默认为多播委托。
    如:delegate void GetAString();
    GetAString testString=delegate()
    {
    Console.WriteLine("a");
    }
    testString+=delegate()
    {
    Console.WriteLine("b");
    }

    6.委托与事件:

    应用程序接受到windows发送的消息时,用委托来封装事件。
    事件发送器:应用程序中的一个对象或程序集。如:系统事件中,鼠标单击,发送器就是.net运行库。(事件发送器并不知道接收器是谁)
    事件接收器:事件发生时,被通知的任何应用程序、对象或组件。事件接收器中有一个方法事件来处理这个事件,前提是要先注册这个事件后,才可以处理。
    封装事件:发送器定义接收器要使用的委托,接收器注册事件处理程序到事件中,这个过程就称为封装事件.

  • 相关阅读:
    终于成功发布我的博客园处女贴,不过,真的颇费周章,两个htmleditor都非常不好用~~
    全文本代码着色(带源码和示例)
    BlogBench Ver 1.0 发布
    [在windows上使用Unix工具]cygwin
    Linux下压缩与解压
    Linux设置界面或命令行启动
    perl模块安装
    Linux下patch的制作和应用
    TAR命令参数详解
    在windows上使用Sysinternals工具
  • 原文地址:https://www.cnblogs.com/0000/p/1531681.html
Copyright © 2011-2022 走看看