C#学习之-----再论委托

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication7
{
        public delegate void EH(string strText);               //第一步:    定义新委托类型       (类)

class EventSourse
         {
                public event EH Textout;                          //声明新委托变量         (实例变量)
                public void TriggerEvent()
              {
                   if (null != Textout)
                       Textout("Event Triggered");    //第三步:调用委托
              }
          }

class TestApp
        {
               static void Main(string[] args)
               {
                EventSourse evsrc = new EventSourse(); //实例化EventSource类

evsrc.Textout += new EH(catchEvent);//第二步:实例化evsrc.Textout----将catchEvent静态方法委托到ecsrc.Textout(实例变量)上
                evsrc.TriggerEvent();          ////验证委托//调用委托代表的方法  catch

evsrc.Textout -= new EH(catchEvent);
                evsrc.TriggerEvent();

TestApp theApp = new TestApp();
                evsrc.Textout += new EH(theApp.instancecatch);
                evsrc.TriggerEvent();
                Console.Read();
               }
               public static void catchEvent(string strText)
              {
                 Console.WriteLine(strText);            //通过Textout(strText),其中strText="Event Triggered"调用、catchEvent,所以输出  Event Triggered
              }
               public void instancecatch(string strText)
                {
                Console.WriteLine("instance" + strText);          
                 }

}
}

时间: 2024-10-06 02:13:15

C#学习之-----再论委托的相关文章

VB.net学习笔记(二十三)再识委托

一.调用静态方法 1.声明 委托须使用前声明定义,可以带参数(一个或多个),可以有返回值. '位于一个模块或类的声明部分 Delegate Sub OneArgSub{ByVal msg As String) '带一个参数,且无返回类型 定义了一个委托的类.后台创建了一个名为OneArgSub的新类,这个类是从System.Delegate类继承而来的.(更准确地说从 Systetn.MuhicastDelegate 继承而来的,而 System.MulticastDelegate 则又是从 S

C#学习(一):委托和事件

预备知识 在学习委托和事件之前,我们需要知道的是,很多程序都有一个共同的需求,即当一个特定的程序事件发生时,程序的其他部分可以得到该事件已经发生的通知. 而发布者/订阅者模式可以满足这种需求.简单来说,在这种模式中,发布者定义了一系列程序的其他部分可能感兴趣的事件.其他类可以"注册",以便再这些事件发生时发布者可以通知它们.这些订阅者类通过向发布者提供一个方法来"注册"以获取通知.当事件发生时,发布者"触发事件",然后执行订阅者提交的所有事件.

C#学习(五)之委托浅探

这一周章老师又讲授了许多知识,本次学习记录就主要探究我非常感兴趣的委托机制.  delegate是表示对具有特定参数列表和返回类型的方法的引用的类型. 在实例化委托时,我们可以将其实例与任何具有兼容签名和返回类型的方法相关联. 我们可以通过委托实例调用方法.委托用于将方法作为参数传递给其他方法. 事件处理程序就是通过委托调用的方法. 我们可以创建一个自定义方法,当发生特定事件时,某个类(如 Windows 控件)就可以调用我们的方法.它其实类似于C++中指向函数指针.一个委托声明示例演示如下:

C#学习之初步理解委托、事件、匿名方法和Lambda

最经在学习LinqtoSql,然后扯到Lambda表达式,然后扯到匿名方法,然后扯到委托,最后扯到事件处理...后来发现对委托这个概念和事件处理这个过程理解得不是很清晰,遂得一下学习笔记.那里说得不对,请大家多多指教! 第一部分:理解委托 委托委托,顾名思义,就是类似于中间人的意思,有些事情你不做,委托别人去做,比如你想相亲,但你不想去主动约女孩子,那你可以交给媒婆去帮你约. 如果你学过C++,请把委托理解成函数指针,都是为了调用函数.函数指针可以调用符合该函数指针要求的函数.什么叫符合该函数指

C#学习第九弹之委托

先上委托的例子: 1 using System; 2 3 delegate int myDelegateHandler(int a, int b); 4 5 public class A 6 { 7 //静态方法 8 public static int M1(int a, int b) 9 { 10 return a + b; 11 } 12 } 13 14 public class Test 15 { 16 public static void Main() 17 { 18 //实例一个委托

C#学习笔记:泛型委托Action<T>和Fun<TResult>

转自:http://www.cnblogs.com/Joetao/articles/2094271.html 本节学习了泛型委托Action<T>和Fun<TResult>两类特殊的委托,这两个特殊的委托是Dot FrameWrok自带的.结合lambda表达式,可以在写程序时,简洁代码和提高编码效率. (一)Action<T>和Fun<TResult>两个委托的不同点: Action<T>只能委托必须是无返回值的方法 Fun<TResul

C#再识委托

C# 1 1.什么是委托 委托是一种定义方法签名的类型.当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联. 您可以通过委托实例调用方法.(MSDN) 委托类似于 C++函数指针,但它们是类型安全的 委托允许将方法作为参数进行传递 委托可用于定义回调方法 委托可以链接在一起 方法不必与委托签名完全匹配.(协变与逆变) C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法. C#3.0引入了Lambda表达式,利用它们可以更简练地编写内联代码块.匿

iOS深入学习(再谈block)

之前写过一篇博客,把Block跟delegate类比,说明了使用block,可以通过更少的代码实现代理的功能.那篇博客将block定义为类的property. 过了这么长时间,对于block的内容有了很多的遗忘,果然block的语法比较操蛋,容易遗忘,还是看看http://fuckingblocksyntax.com/,复习一下操蛋的block语法,我翻译如下, (1)block作为本地变量(local variable) returnType (^blockName)(parameterTyp

前端-【学习心得】-事件委托方法

上篇分享提出的这个事件委托,今天让我来详细说明下把. 先看一段例子: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Examples</title> <meta