委托是设什么?
1.函数指针 指向函数的指针
2.类类型的一种
从使用的方式上,总是先定义一个委托类型,然后定义委托变量,然后执行委托指向的函数。
委托存在的形式?
1.匿名函数
匿名函数的好处是可以执行一段代码,可以灵活定义。
public static void Test()
{
Action action = delegate(){ MessageBox.Show("aa"); };
if (action != null)
{
action();
}
}
2.事件处理
winform,wpf 的事件处理都是使用委托的。
public static void Test()
{
System.Windows.Controls.MenuItem menuItem = new System.Windows.Controls.MenuItem();
menuItem.Click += delegate(object sender, RoutedEventArgs e)
{
if(sender is System.Windows.Controls.MenuItem)
{
MessageBox.Show("aa");
}
};
}
3.执行任务
public static void Test()
{
Task.Factory.StartNew(delegate ()
{
MessageBox.Show("aa");
}).ContinueWith(delegate (Task t1) {
MessageBox.Show("bb");
});
}
4.执行线程
public static void Test()
{
Thread thread = new Thread(new ThreadStart(delegate() {
MessageBox.Show("aa");
}));
thread.Start();
}
总结:
当委托类型作为参数时候,这个时候会有很大的灵活性。
对于委托的理解,最重要的是委托是一种特殊的类类型,有了这种类型,可以使程序设计有了更多的可能性。