“委托”小议
什么是委托?
答:C#中的委托相当于C/C++中的指针,函数指针用指针获取一个函数的入口地址,实现对函数的操作。与其不同的是,委托是面向对象的,类型安全的和保险的,因此需要经过定义、声明并实例化后才可以使用它。使用时作为参数进行传递,为引用传递。
委托的实例化中的参数(要委托的方法)既可以是实例方法,也可以是静态方法。
例:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WT
{
public partial class Form1 : Form
{
delegate void SetProgressBarValueDelegate(int value); //定义委托
SetProgressBarValueDelegate setProgressBarValueDelegate; //声明委托
public Form1()
{
InitializeComponent();
}
private void btn_Start_Click(object sender, EventArgs e)
{
setProgressBarValueDelegate = new SetProgressBarValueDelegate(progressBar1);//实例化委托
progressBar(setProgressBarValueDelegate); //委托调用方法
setProgressBarValueDelegate = new SetProgressBarValueDelegate(progressBar2);
progressBar(setProgressBarValueDelegate);
}
private void progressBar(SetProgressBarValueDelegate setValue)//传递委托的方法
{
for (int i = 0; i < 100;i++ )
{
Application.DoEvents();
Thread.Sleep(50);
setValue(i);
}
}
private void progressBar1(int value) //被委托的方法
{
pgb_bar1.Value = value;
}
private void progressBar2(int value) //被委托的方法
{
pgb_bar2.Value = value;
}
}
}

浙公网安备 33010602011771号