📜  C#中的委托与接口(1)

📅  最后修改于: 2023-12-03 14:40:32.511000             🧑  作者: Mango

C#中的委托与接口

什么是委托?

在C#中,一个委托是一个包含引用到一个或多个方法的对象,可以通过委托来调用这些方法。委托是一种类型,可以将其声明为变量并将其实例化。委托实例可以引用一个方法,也可以引用一组方法。

声明委托

要声明委托,需要使用delegate关键字:

public delegate void MyDelegate(string message);

上面代码声明了一个委托类型MyDelegate,它接受一个字符串类型的参数message并且没有返回值。

实例化委托

实例化一个委托分为两步:

  1. 创建一个委托实例
  2. 将一个或多个方法绑定到委托实例上
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
总结

使用接口可以定义公共的行为契约,使得不同的类和结构可以按照同样的接口进行实现,可以提高代码的复用性和可维护性。