委托的用法简单示例一
usercontrols:里面写法如下:
public delegate void ButtonClickHandler();public event ButtonClickHandler ButtonClick;form1里面定义时间:this.usercontrols.ButtonClick += new UserControl.UserMngControls.UserLogin.ButtonClickHandler(this.usercontrols _ButtonClick);private void userLogin1_ButtonClick(){ MessageBox.Show(this.userLogin1.MReturn.ToString());}本文来自CSDN博客,转载请标明出处:
委托的用法简单示例二 using System;
using System.Collections.Generic;using System.Text;//函数作用:委托的用法namespace ConsoleApplication21{ class Program { delegate double testDelegate(double x, double y);//创建委托,并且返回值为doublestatic double Multiply(double x, double y) //创建函数
{ return x * y; }static double Divide(double x, double y)
{ return x / y; }static void Main(string[] args)
{ testDelegate selectAction; //声明 Console.WriteLine("请输入2个数字!用“,”隔开"); string getnum = Console.ReadLine(); int zz = getnum.IndexOf(','); double num1 = Convert.ToDouble(getnum.Substring(0,zz)); double num2 = Convert.ToDouble(getnum.Substring(zz + 1, getnum.Length - zz - 1)); Console.WriteLine("请选择操作,m or d "); string act = Console.ReadLine().ToLower(); if (act == "m")//这里根据选择初始化委托变量 { selectAction = new testDelegate(Multiply); }//这里即选择哪个函数执行委托 else { selectAction = new testDelegate(Divide); } Console.WriteLine("运算结果:{0}", selectAction(num1,num2));//让委托调用所选函数,并执行 } }}
委托的用法简单示例三 使用一个委托的过程是声明委托类型〉声明这个类型委托的一个实例〉调用委托。您可以参考下面的代码:
using System;
public class EntryPoint
{ public static void Main() { myclass.MyDelegate mydelegate = new myclass.MyDelegate(OutPut);//声明一个委托变量并用适当方法初始化它myclass.CallReadLine(mydelegate);
}public static void OutPut()//这个是委托调用的方法,“回调函数”
{ Console.WriteLine("User had inputed something!"); } }public class myclass
{ public delegate void MyDelegate();//声明了一个委托类型public static void CallReadLine(MyDelegate e)//这里把委托当作方法的参数
{ Console.ReadLine();e();//如果用户输入了内容,就执行委托。
} }
委托的用法简单示例四
委托是一种可以把引用封装成命名或者匿名函数的类型.委托的声明制定了一个函数签名,其中包含一个返回类型和参数列表.示例:delegate void SampleDelegate(string message).这里声明要用到关键字delegate.接着声明该委托类型的变量,初始化这个变量为与委托有相同签名的函数引用.最后可以使用委托变量调用这个函数. 下面来说一下与委托有关联的命名函数与匿名函数:当你用一个命名方法来实例化一个委托的时候,该方法会作为一个参数来传递,示例: //声明一个委托 delegate void Del(int x); //定义一个命名函数 void DoWork(int k) { /* */} //使用该命名方法作为参数来实例化委托 Del d=obj.DoWork; 以下给出完整的示例://声明一个委托delegate void Del(int i,double j);class MathClass{ //声明相同签名的函数 void MultiplyNumbers(int m,double n) { Console.WriteLine(m*n+" "); } static void Main() { MathClass m=new MathClass();//实例化类的对象 //使用"MultiplyNumbers"来实例化委托 Del d=m.MultiplyNumbers; //调用委托对象d Console.WriteLine("Invoking the delegate using 'MultiplyNumbers':"); for(int i=1;i<=5;i++) { d(i,2); } }显示结果:Invoking the delegate using 'MultiplyNumbers':2 4 6 8 10创建匿名方法实质上作为一个委托参数传递给一个代码块.示例:
//创建一个委托实例delegate void Del(int x);//用匿名方法来实例化委托Del d=delegate(int k){/*......*/};由于使用匿名方法来实例化委托能够减少代码的开销,因为可以消除创建不同方法的需要.示例: Using System.Threading void StartThread() { Thread t1=new Thread (delegate() { System.Console.WriteLine("Hello"); System.Console.WriteLine("World!"); }); t1.Start(); }下面通过两种方法来实例化委托,并且当委托被调用时,显示相应的信息://实例化一个委托delegate void Printer(string s)class TestClass{ static void Main() { //使用匿名方法来实例化委托 Printer p=delegate(string j) { Console.WriteLine(j); } ; //匿名委托调用的结果 p("The delegate using the anonymous method is called.");//使用命名方法来实例化委托
p=new Printer(TestClass.DoWork); //命名委托调用的结果 p("The delegate using the named method is called."); //定义命名委托相关的方法 static void DoWork(string k) { Console.WriteLine(k); } }}