回调函数
say(test);
void test(){
Console.WriteLine("123");
}
void say(callback callback){
Console.WriteLine("....");
Thread.Sleep(2000);
callback();
}
delegate void callback();
pickone(1,2,myspecialrule).Dump();
int pickone(int a, int b, mYRule rule)
{
if (rule(a, b))
{
return a;
}
else
{
return b;
}
}
bool myspecialrule(int x, int y)
{
return true;
}
delegate bool mYRule(int x, int y);
事件
var demo=new demo();
demo.MyEvent+=()=>"hello".Dump();
demo.InvokeEvent();
class demo{
public event Action MyEvent;
public void InvokeEvent(){
MyEvent?.Invoke();
}
}
值改变触发
var demo=new demo();
demo.MyValueChanges+=()=>"value change observed".Dump();
demo.Myvalue=10;
class demo{
int myvalue;
public int Myvalue{
get{return myvalue;}
set{
myvalue=value;
MyValueChanges?.Invoke();
}
}
public event Action MyValueChanges;
}