【定义】:委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
//////////////////////////////////////////////////////////////////////
回调函数(CallBack)是WINDOWS编程中的一个重要部分,.NET以委托的形式实现了函数指针的概念,而且它是类型安全的。
我们习惯把数据作为参数传递给方法,而有时某个方法执行的操作并不是针对数据进行的,而是要对另一个方法进行操作,这就比较复杂了,在编译时我们并不知道第二个方法是什么,这个信息只能在运行时得到,所以需要把第二个方法作为参数传递给第一个方法。
在这种情况下我们就要使用委托来解决问题了。
委托的声明:public delegate void MyDelegate(string str);
其中void是返回类型,str是参数。
注:委托并不是方法,它是一种特殊的类型
以下是一个委托的示例:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace InvokeDelegate { public class InvokeDelegate { public static void ConsoleOne(string str) { Console.WriteLine("我喜欢的明星: {0}", str);
}
public static void ConsoleTwo(string str) { Console.WriteLine("我喜欢的明星: {0}", str);
}
public void ConsoleThree(string str) { Console.WriteLine("我喜欢的明星: {0}", str);
}
public class InvokeDelegate1 { public static void P1(string str) { Console.WriteLine("我喜欢的明星: {0}", str); } }
public class InvokeDelegate2 { public void P1(string str) { Console.WriteLine("我喜欢的明星: {0}", str); } }
} }
using System; using System.Collections.Generic; using System.Text;
namespace DelegateStudy { public delegate void MyDelegate(string str); class Program { static void Main(string[] args) { MyDelegate m1 = new MyDelegate(InvokeDelegate.InvokeDelegate.ConsoleOne); m1("权相宇");
MyDelegate m2 = new MyDelegate(InvokeDelegate.InvokeDelegate.ConsoleTwo); m2("宋慧乔");
MyDelegate m3 = new MyDelegate(new InvokeDelegate.InvokeDelegate().ConsoleThree); m3("金喜善");
MyDelegate m4 = new MyDelegate(m3); m4("金在元");
//组合两个委托
MyDelegate m5 = m1 + m2; m5 += m3; m5("李连杰");///m1,m2,m3
//从组合中删除委托m3 MyDelegate m6 = m5 - m3; m6("成龙"); m6 -= m3; m6("成龙");
MyDelegate m7 = new MyDelegate(InvokeDelegate.InvokeDelegate.InvokeDelegate1.P1); m7("Rain");
MyDelegate m8 = new MyDelegate(new InvokeDelegate.InvokeDelegate.InvokeDelegate2().P1); m8("韩佳人"); } } }
今天看到一个网友从原来虚拟主机准备转移至服务器管理自己的业务。这里问到虚拟主机和服务器到底有什么不同,需要用到哪些工具软件。那准备在下班之间稍微摸鱼一下整理我们服务器安装环境和运维管理中常见需要用到的软件工具推荐。第一、系统镜像软件一般来说,我们云服务器或者独立服务器都是有自带镜像的。我们只需要选择镜像安装就可以,比如有 Windows和Linux。但是有些时候我们可能需要自定义镜像的高级玩法,这...
RFCHOST,这个服务商我们可能有一些朋友知道的。不要看官网是英文就以为是老外服务商,实际上这个服务商公司在上海。我们实际上看到的很多商家,有的是繁体,有的是英文,实际上很多都是我们国人朋友做的,有的甚至还做好几个品牌域名,实际上都是一个公司。对于RFCHOST商家还是第一次分享他们家的信息,公司成立大约2015年左右。目前RFCHOST洛杉矶机房VPS正进行优惠促销,采用CN2优化线路,电信双...
我们很多老用户对于BuyVM商家还是相当熟悉的,也有翻看BuyVM相关的文章可以追溯到2014年的时候有介绍过,不过那时候介绍这个商家并不是很多,主要是因为这个商家很是刁钻。比如我们注册账户的信息是否完整,以及我们使用是否规范,甚至有其他各种问题导致我们是不能购买他们家机器的。以前你嚣张是很多人没有办法购买到其他商家的机器,那时候其他商家的机器不多。而如今,我们可选的商家比较多,你再也嚣张不起来。...