相信許多人在使用地表最強IDE Visual Studio 來繼承實作介面(Interface)成員的時候,旁邊的 小燈泡在提示實作的同時也會提示明確實作。 很多時候我們選擇忽略這個提示繼續實作我們必須實作的成員,但總有一天該逃的總是逃不 過,所以到底什麼是明確實作? 一言以蔽之,明確實作成員會透過該介面個體進行存取呼叫。 public interface IAnimal { string Name { get; set; } void Voice(); } public class Dog : IAnimal { public string Name { get; set; } public void Voice() { Console.WriteLine("有狗發出聲音"); } void IAnimal.Voice() { Console.WriteLine("有動物發出聲音"); } static void Main(string[] args) { var dog = new Dog(); dog.Voice(); // output 有狗發出聲音 ((IAnimal)dog).Voice(); // output 有動物發出聲音 Console.ReadKey(); } } 從上方的程式碼中看到同一個個體實例在不同的形態下做的事情不一樣,Dog沒辦法呼叫 IAnimal.Voice,只有當Dog是IAnimal時才可以呼叫專屬於IAnimal的明確實作Voice。 這樣有什麼好處? 代表著我們能夠依照同一個個體因實際狀況的不同去去做不一樣的事,甚至是 不同型態的回傳與參數 也都能辦到(如下方)。 public class Dog : IAn