注意这两个类执行之间类似的方法。这些方法具有不同的名称,但它们的标记和实体都相同。你可以使用一个delegate来将这两个方法结合在一起,即通过定义一个从这两个方法的共同特性中抽象出新的数据类型。也就是它们都将一个简单的字符作为一个变量并返回void。C#中的delegate关键词使得一下语句成为可能:
public delegate void example(String passedString);
例如,使用这一新的数据类型声明,我们可以通过一个通用的抽象来调用这两个方法。下面的C#控制台程序利用了我们的delegate范例来调用这两个类的方法:
public class TestExampleDelegate {
public delegate void example(String passedString);
public static void Main(string[] args) {
example[] items = new example[2];
items[0] = new example(new DelegateClass1().exampleMethod1);
items[1] = new example(new DelegateClass2().exampleMethod2);
for(int i = 0; i < items.Length; i++) {
items[i]("Builder.com Rules!");
} } }
以上代码建立了一个数组的范例对象,并使用这些类中的方法实例化这些对象。由于忽略了括号,范例对象被一个调用方法处理。代码的执行结果显示了文本中(两次)。
(注意:Delegates不属于C#的细节;他们是.NET Framework的标准部分,所以也你可以使用其它的语言,比如VB.NET或者J#。)
