using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 代理和事件
{
class NumberTask
{
//创建一个代理 MyDelegate(int value)和方法参数一致
public delegate void MyDelegate(int value);
//创建一个代理的实例GetNumber
public MyDelegate GetNumber;
public void StartNumberTask(int num)
{
Random rnd = new Random();
int number = rnd.Next(0, num);
}
}
}
第一步:定义一个代理
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using 代理和事件.Resources;
namespace 代理和事件
{
public partial class MainPage : PhoneApplicationPage
{
//声明一个对象
NumberTask numberTask;
// 构造函数
public MainPage()
{
InitializeComponent();
}
private void btnhq_Clik(object sender, RoutedEventArgs e)
{
//创建一个代理的实例
代理和事件.NumberTask.MyDelegate DelegateOject = new NumberTask.MyDelegate(DekegateFunction);
numberTask = new NumberTask();
//对代理赋值
numberTask.GetNumber = DelegateOject;
//调用代理方法
numberTask.StartNumberTask(1000);
}
//代理实现Ui上的值
public void DekegateFunction(int PassValue)
{
txtsz.Text = PassValue.ToString();
}
}
}
第二步:创建代理实例
class NumberTask
{
//创建一个代理 MyDelegate(int value)和方法参数一致
public delegate void MyDelegate(int value);
//创建一个代理的实例GetNumber
public MyDelegate GetNumber;
public void StartNumberTask(int num)
{
Random rnd = new Random();
int number = rnd.Next(0, num);
if (GetNumber != null)
{
GetNumber(number);
}
}
}
第三步:调用代理
代理类似C++的函数指针,是一种引用类型,可以传递方法