class Program
{
private delegate string GetAString(); //定义了一个委托类型,这个委托类型叫GetAString
static void Main(string[] args)
{
//实例1
//int x = 40;
string s = x.ToString();//tostring 方法用来把数据转换成字符串
Console.WriteLine(s);
使用委托类 创建实例
GetAString a = new GetAString(x.ToString); //a指向了x中的ToString方法
//GetAString a = x.ToString;
string s = a(); //通过委托实例去调用X中的ToString方法
//string s = a.Invoke();// 通过invoke方法 调用a所引用的方法
//Console.WriteLine(s);//通过委托类型是调用一个方法,跟直接调用这个方法是一样的
//实例 2 使用委托类型作为方法的参数
PrintString method=Method1;
PrintStr(method);
method = Method2;
PrintStr(method);
Console.ReadKey();
}
#region 实例2
private delegate void PrintString();
static void PrintStr(PrintString print)
{
print();
}
static void Method1()
{
Console.WriteLine("Methond 1");
}
static void Method2()
{
Console.WriteLine("Methond 2");
}
#endregion
}
/// <summary>
/// 委托事件类
/// </summary>
/// <param name="manager"></param>
public delegate void DelegateEvent(DelegateManager manager);
public class DelegateManager
{
/// <summary>
/// 委托事件
/// </summary>
public event DelegateEvent OnDelegateEvent;
/// <summary>
/// 调用委托事件
/// </summary>
public void DelegateEventTriggrt()
{
if (OnDelegateEvent != null)
{
OnDelegateEvent(this); //调用委托事件
}
}
}
public class DelegateToUse
{
/// <summary>
/// 委托事件绑定
/// </summary>
public void AddDelegate()
{
DelegateManager.OnDelegateEvent += UseDelegate;
}
/// <summary>
/// 绑定过后的委托事件(UseDelegate)在触发后被调用
/// </summary>
/// <param name="manager">参数</param>
public void UseDelegate(DelegateManager manager)
{
}
}