使用介面做為參數定義方法

已完成

在 C# 中,介面會建立類別的合約。 在此單元中,您會探索方法如何接受介面做為參數、瞭解定義這些方法的語法,以及檢閱實際的範例實作。

接受接口的方法

C# 中的方法可以接受介面做為參數,以確保傳遞的物件遵守特定的合約。 使用介面做為參數,可讓程式代碼更具彈性且可重複使用。

例如,請考慮接受 IAnimal 介面做為參數的方法:

public interface IAnimal
{
    void MakeSound();
}

public void MakeAnimalSound(IAnimal animal)
{
    animal.MakeSound();
}

在此範例中,方法 MakeAnimalSound 會接受介面 IAnimal,以確保傳遞給它的任何物件都有方法 MakeSound

備註

使用介面做為方法參數會促進鬆散結合,並增強可測試性。

範例:介面做為方法參數

在下列範例中,我們有數個檔案,每個檔案都包含不同的類別或介面。 將專案放在個別的檔案中很常見,以提升組織和可讀性。

IAnimal.cs

檔案 IAnimal.cs 定義 IAnimal 介面,其中包含方法 MakeSound

public interface IAnimal
{
    void MakeSound();
}

Dog.csCat.cs

這些檔案包含DogCat類別,這些類別實作IAnimal介面並提供MakeSound方法。

public class Dog : IAnimal
{
    public void MakeSound()
    {
        Console.WriteLine("Woof!");
    }
}

public class Cat : IAnimal
{
    public void MakeSound()
    {
        Console.WriteLine("Meow!");
    }
}

AnimalSound.cs

此檔案包含類別AnimalSound,其有一個方法MakeAnimalSound,該方法接受介面IAnimal做為參數,並呼叫MakeSound方法。

public class AnimalSound
{
    public void MakeAnimalSound(IAnimal animal)
    {
        animal.MakeSound();
    }
}

Program.cs

此檔案包含具有Program方法的Main類別,該方法會建立DogCat的實例,並使用AnimalSound類別來讓它們發出聲音。

public class Program
{
    public static void Main()
    {
        IAnimal dog = new Dog();
        IAnimal cat = new Cat();
        
        AnimalSound animalSound = new AnimalSound();
        animalSound.MakeAnimalSound(dog); // Output: Woof!
        animalSound.MakeAnimalSound(cat); // Output: Meow!
    }
}

此範例示範如何使用介面作為方法參數,促進鬆散結合並增強可測試性。 這是瞭解 C# 中介面概念的簡單但有效的方法。