前言

預設介面方法 (Default Interface Method) 是 C# 8.0 另一項新功能,他允許開發人員使用 Traits 程式技術。 Traits 是物件導向開發的一個概念,它呈現一組方法以用於擴充類別功能,可提高沒有相關類別之間方法的重複使用,是一個強大的撰寫程式技術(參考資料)。本篇文章將簡單介紹預設介面方法,若有錯誤或任何建議,請各位先進不吝指教,謝謝



介紹

在C# 8.0 中,你能在 interface 內加入預設方法。以下列 console 範例程式為例,我們新增了一個 interface IPrintService實作類別 PrintService。接下來,我們在在 interface 內我們加入了一個預設方法,列印出 "我是interface 內的預設方法":
 
namespace InterfaceDefaultMethod
{
    // 介面
    interface IPrintService
    {
        public void DefaultMethod()
        {
            Console.WriteLine("我是 interface 內的預設方法");
        }
    }

    // 實作類別
    class PrintService : IPrintService
    {

    }

    class Program
    {
        static void Main(string[] args)
        {
            IPrintService service = new PrintService();
            service.DefaultMethod();
        }
    }
}

執行後結果如下:


在過去 C# 中其實不能直接在介面中使用方法,而在C# 8.0 (也就是上面的範例),你可以在interface 內使用預設方法,在宣告 IPrintService service = new PrintService(); 後使用它。但若是將 IPrintService 改成 PrintService,則會發生錯誤。
 
class Program
{
    static void Main(string[] args)
    {
        PrintServiceservice = new PrintService();
        service.DefaultMethod();
    }
}



參考資料

1. Default Interface Methods in C# 8 - infoQ
2. Trait (computer programming) - Wiki
3. Traits (電腦科學) - Wiki
4. Default interface methods - Microsoft Docs