C#中委托的简单应用
前言
C#中的委托是对方法的引用类型,为委托分配方法后,委托与引用方法具有相同的行为。相当于委托内部包含了一个指向某种方法的指针,调用委托对象就可以调用引用的方法。
1、委托的声明
委托声明的格式如下:
[修饰符] + delegate + [返回类型] + [委托名称] + ([参数列表])
delegate为委托关键字;
[修饰符]为可选项;
delegate + [返回类型] + [委托名称]是必须项;
[参数列表]用来指定委托所匹配的方法的参数列表。;
声明方式如下:
delegate void MyDelegate(string s);
2、委托的实例化
委托实例化的过程就是将委托与方法关联的过程。
委托实例化方法类似于方法调用,但不同的是,委托不传递参数,而是直接写方法名;
委托实例化方法有两种方式:静态方法和实例方法
两种实例化方法如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Windows;
namespace 委托1
{
internal class Program
{
public delegate void Mydelegate(string s);
public class Class1
{
public static void Method1(string s)
{
MessageBox.Show(s);
}
public void Methods(string s)
{
MessageBox.Show(s);
}
}
static void Main(string[] args)
{
Mydelegate my = new Mydelegate(Class1.Method1); //实例化委托的静态方法
Class1 C = new Class1(); //实例化委托的实例方法
Mydelegate my2 = new Mydelegate(C.Methods);
my.Invoke("Method1");
my2.Invoke("Methods");
Thread.Sleep(1000);
}
}
}
3、委托的调用
一般使用委托名称+传递给委托的参数进行委托的调用,如下所示:
my.Invoke("Method1");
my2.Invoke("Methods");
//也可以直接调用
my ("Method1");
my2 ("Methods");
4、委托调用匿名方法和命名方法
以上的调用方式就是命名方法的调用,匿名方法调用需要将委托的引用指向匿名方法,两种调用方法代码如下(示例):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 匿名方法
{
delegate void DelOutput(string K);
internal class Program
{
static void NamedMethod(string K)
{
Console.WriteLine(K);
}
static void Main(string[] args)
{
//委托的引用指向匿名方法
DelOutput del = delegate (string j)
{
Console.WriteLine(j);
};
//调用匿名方法
del.Invoke("匿名方法被调用");
Console.WriteLine("\n");
//调用命名方法
del = NamedMethod;
del.Invoke("命名方法被调用");
Console.ReadLine();
}
}
}