using System;
namespace Test
{
delegate void InformDelegate(string from);
class Program
{
static void Main(string[] args)
{
new Regist().Invoke1();
new Regist().Invoke2();
new Regist().Invoke3();
}
}
class Regist
{
private event InformDelegate InformEvent;// 相当于委托的实例
private void InformEvent1(string from)
{
Console.WriteLine($"from {from}, InformEvent1");
}
private void InformEvent2(string from)
{
Console.WriteLine($"from {from}, InformEvent2");
}
private void InformEvent3(string from)
{
Console.WriteLine($"from {from}, InformEvent3");
}
public void Invoke1()
{
InformEvent += InformEvent1;
InformEvent.Invoke("lily");
}
public void Invoke2()
{
InformEvent += InformEvent1;
InformEvent += InformEvent2;
InformEvent.Invoke("lily");
}
public void Invoke3()
{
InformEvent += InformEvent1;
InformEvent += InformEvent2;
InformEvent += InformEvent3;
InformEvent.Invoke("lily");
}
}
}
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
new Regist().Invoke0();
new Regist().Invoke1();
new Regist().Invoke2();
new Regist().Invoke3();
}
}
class Regist
{
private event Action ActionEvent0;// 内置的泛型委托(无返回值)
private event Action<string> ActionEvent1;
private event Action<string, string> ActionEvent2;
private event Action<string, string, string> ActionEvent3;
private void Regist_ActionEvent0()
{
Console.WriteLine($"Regist_ActionEvent0");
}
private void Regist_ActionEvent1(string arg1)
{
Console.WriteLine($"{arg1}, Regist_ActionEvent1");
}
private void Regist_ActionEvent2(string arg1, string arg2)
{
Console.WriteLine($"{arg1}, {arg2}, Regist_ActionEvent2");
}
private void Regist_ActionEvent3(string arg1, string arg2, string arg3)
{
Console.WriteLine($"{arg1}, {arg2}, {arg3}, Regist_ActionEvent2");
}
public void Invoke0()
{
ActionEvent0 += Regist_ActionEvent0;
ActionEvent0.Invoke();
}
public void Invoke1()
{
ActionEvent1 += Regist_ActionEvent1;
ActionEvent1.Invoke("arg1");
}
public void Invoke2()
{
ActionEvent2 += Regist_ActionEvent2;
ActionEvent2.Invoke("arg1", "arg2");
}
public void Invoke3()
{
ActionEvent3 += Regist_ActionEvent3;
ActionEvent3.Invoke("arg1", "arg2", "arg3");
}
}
}
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
new Regist().Invoke0();
new Regist().Invoke1();
new Regist().Invoke2();
new Regist().Invoke3();
}
}
class Regist
{
private event Func<string> FuncEvent0;// 内置的泛型委托(有返回值,最后为返回类型)
private event Func<string, string> FuncEvent1;
private event Func<string, string, string> FuncEvent2;
private event Func<string, string, string, string> FuncEvent3;
private string Regist_FuncEvent0()
{
return $"Regist_FuncEvent0";
}
private string Regist_FuncEvent1(string arg1)
{
return $"{arg1}, Regist_FuncEvent1";
}
private string Regist_FuncEvent2(string arg1, string arg2)
{
return $"{arg1}, {arg2} Regist_FuncEvent2";
}
private string Regist_FuncEvent3(string arg1, string arg2, string arg3)
{
return $"{arg1}, {arg2}, {arg3} Regist_FuncEvent3";
}
public void Invoke0()
{
FuncEvent0 += Regist_FuncEvent0;
var result = FuncEvent0.Invoke();
Console.WriteLine(result);
}
public void Invoke1()
{
FuncEvent1 += Regist_FuncEvent1;
var result = FuncEvent1.Invoke("arg1");
Console.WriteLine(result);
}
public void Invoke2()
{
FuncEvent2 += Regist_FuncEvent2;
var result = FuncEvent2.Invoke("arg1", "arg2");
Console.WriteLine(result);
}
public void Invoke3()
{
FuncEvent3 += Regist_FuncEvent3;
var result = FuncEvent3.Invoke("arg1", "arg2", "arg3");
Console.WriteLine(result);
}
}
}
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
new Regist().Invoke();
}
}
class Regist
{
private event Predicate<string> PredicateEvent;// 内置的泛型委托(只接受一个参数,返回值必须布尔值,即Func<T, bool>)
public void Invoke()
{
PredicateEvent += Regist_PredicateEvent; ;
var result = PredicateEvent.Invoke("arg1");
Console.WriteLine(result);
}
private bool Regist_PredicateEvent(string arg1)
{
return arg1 == "arg1";
}
}
}