C# 中的默认接口方法

1. 简介

默认接口方法是 C# 8 中一个非常有用的功能,它使得我们可以在接口中为方法提供默认实现,从而避免了对现有代码进行重构的需求。这个功能在我们需要向现有接口添加或修改方法时非常有用,特别是当这些接口已经被广泛使用并且无法进行修改的情况下。

在本文中,我们将学习 C# 中默认接口方法的详细概念、作用及示例演示。

2. 默认接口方法的概念

默认接口方法是在接口中定义的具有默认实现的方法。这意味着,我们可以在接口中实现方法并为其提供默认行为,然后在实现该接口的类中可选择仅保留该默认实现或者将其重写。

默认接口方法的出现,使得我们可以修改接口的定义,而无需对该接口的实现进行修改。同时,它也遵循了“向后兼容”的规则,因为实现了该接口的类可以继续使用该接口的默认方法,并且该实现将不会受到影响。

3. 默认接口方法的作用

默认接口方法的主要作用是允许我们在接口中添加新方法,而不会破坏现有的实现。这在需要向现有接口添加新方法时非常有用。

在旧时候,一旦定义了接口,我们就无法向其中添加新方法,因为这将破坏所有现有的实现。这意味着,我们必须重新设计接口并对所有实现进行修改,因此非常麻烦。

现在,有了默认接口方法,我们可以向接口添加新方法,而无需进行接口的重构。

4. 默认接口方法的示例

让我们通过一个示例来了解如何在 C# 中使用默认接口方法。

假设我们有一个简单的接口 IAnimal,该接口定义了一个单独的方法 SayHello()

public interface IAnimal

{

void SayHello();

}

然后,我们实现一个类 Dog 来实现该接口:

public class Dog : IAnimal

{

public void SayHello()

{

Console.WriteLine("汪汪汪!");

}

}

现在,我们想要向接口 IAnimal 添加一个新方法 Walk(),而不会破坏现有的实现。

我们可以这样做:

public interface IAnimal

{

void SayHello();

// 添加一个默认实现

void Walk()

{

Console.WriteLine("一步,又一步...");

}

}

我们使用了 void Walk() 的默认实现,以确保定义了该接口的所有类都可以使用该方法。现在,我们可以保留 Dog 类的原始定义,并使用新添加的 Walk() 方法:

public class Dog : IAnimal

{

public void SayHello()

{

Console.WriteLine("汪汪汪!");

}

// 不需要实现 Walk() 方法

}

现在,如果我们创建一个新的 Dog 实例,并调用 SayHello()Walk() 方法,我们将得到以下输出结果:

Dog dog = new Dog();

dog.SayHello(); // 输出 "汪汪汪!"

dog.Walk(); // 输出 "一步,又一步..."

5. 总结

默认接口方法是 C# 8 的一项新功能,它使得我们可以向接口添加新方法,而无需破坏现有的实现。它使得接口的定义更加灵活,并允许我们在不影响现有代码的情况下进行修改。

要使用默认接口方法,只需定义一个在接口中具有默认实现的方法即可,然后在实现该接口的类中可选择仅保留该默认实现或者将其重写。

后端开发标签