委托的使用示例代码--静态、实例、多播


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

namespace DelegateExample
{
/// <summary>
/// 给排序算法传递一个动态比较函数的委托示例
/// </summary>

// 进行排序的委托
public delegate bool Compare(int left, int right);

public class MyDelegateTest
{
private int[] items;

public int[] Items
{
set { items = value; }
get { return items; }
}

// 比大
public bool Greater(int left, int right)
{
return left > right;
}

// 比小
public bool Less(int left, int right)
{
return !Greater(left, right);
}

public void Sort(Compare compare)
{
for (int i = 0; i < items.Length - 1; i++)
{
for (int j = i + 1; j < items.Length; j++)
{
if (compare(items[i], items[j]))
{
int tmp = items[i];
items[i] = items[j];
items[j] = tmp;
}
}
}
}
}

class Sort
{
/*
public static void Main()
{
MyDelegateTest sample = new MyDelegateTest();
int[] items = new int[10] { 7, 4, 9, 1, 3, 2, 8, 5, 6, 0};
sample.Items = items;
// 使用降序
sample.Sort(new Compare(sample.Less));

for (int i = 0; i < sample.Items.Length; i++)
{
Console.WriteLine(sample.Items[i]);
}

Console.Read();
}*/
}

/// <summary>
/// 一个简单的委托示例
/// </summary>

// 新建一个用以输出消息的委托
public delegate void WriteMessage();

public class MyDelegateTest2
{
// 一个输出消息的静态方法
public static void StaticWrite()
{
Console.WriteLine("委托调用了一个静态方法.");
}

// 一个输出消息的类实例方法
public void Write()
{
Console.WriteLine("委托调用了一个类实例方法.");
}
}

class WriteMessageClass
{
public static void Main()
{
// 新建一个委托,回调函数是一个静态方法
WriteMessage wm = new WriteMessage(MyDelegateTest2.StaticWrite);
wm();
Console.WriteLine();
// 新建一个委托并与加到先前建立的委托组成委托链,回调函数是一个类实例方法
MyDelegateTest2 mdt = new MyDelegateTest2();
wm += new WriteMessage(mdt.Write);
// 执行委托链上所有的回调函数
wm();
Console.Read();
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值