📅  最后修改于: 2023-12-03 14:40:32.511000             🧑  作者: Mango
在C#中,一个委托是一个包含引用到一个或多个方法的对象,可以通过委托来调用这些方法。委托是一种类型,可以将其声明为变量并将其实例化。委托实例可以引用一个方法,也可以引用一组方法。
要声明委托,需要使用delegate关键字:
public delegate void MyDelegate(string message);
上面代码声明了一个委托类型MyDelegate,它接受一个字符串类型的参数message并且没有返回值。
实例化一个委托分为两步:
public void MethodA(string message)
{
Console.WriteLine($"MethodA: {message}");
}
public void MethodB(string message)
{
Console.WriteLine($"MethodB: {message}");
}
MyDelegate del = new MyDelegate(MethodA);
del += MethodB;
上面代码创建了一个委托实例del并将两个方法绑定到委托实例上。
可以通过委托实例来调用绑定的方法:
del("Hello World");
上面代码会依次调用MethodA和MethodB方法,并输出以下内容:
MethodA: Hello World
MethodB: Hello World
使用委托可以更加灵活地调用方法,可以动态地绑定和解绑方法,而且使用委托可以使代码更加简洁。
在C#中,接口是定义了一组公共成员的类型,没有实现的方法、属性、事件或索引器。类或结构可以实现一个或多个接口,并且需要实现接口中的所有成员。
要声明接口,需要使用interface关键字:
public interface IMyInterface
{
void MethodA();
void MethodB();
}
上面代码声明了一个名为IMyInterface的接口,它包含两个没有实现的方法MethodA和MethodB。
要实现一个接口,需要使用类或结构来实现接口中的成员:
public class MyClass : IMyInterface
{
public void MethodA()
{
Console.WriteLine("MethodA");
}
public void MethodB()
{
Console.WriteLine("MethodB");
}
}
上面代码定义了一个名为MyClass的类并实现了IMyInterface接口中的方法MethodA和MethodB。
可以通过类或结构的实例来调用实现的接口方法:
MyClass obj = new MyClass();
obj.MethodA();
obj.MethodB();
上面代码会调用MyClass实例中实现的MethodA和MethodB方法并输出以下内容:
MethodA
MethodB
使用接口可以定义公共的行为契约,使得不同的类和结构可以按照同样的接口进行实现,可以提高代码的复用性和可维护性。