สํารวจการใช้งานอินเทอร์เฟซเริ่มต้น

เสร็จสมบูรณ์เมื่อ

การปรับใช้อินเทอร์เฟซเริ่มต้น ช่วยให้คุณสามารถเพิ่มวิธีการใหม่ลงในอินเทอร์เฟซโดยตรงและนําเสนอการใช้งานเริ่มต้น คลาสที่ใช้อินเทอร์เฟซนี้ สามารถใช้เมธอดค่าเริ่มต้นหรือสามารถแทนที่และนําเสนอการใช้งานของตนเองได้

การใช้งานเริ่มต้น

การใช้งานเริ่มต้นในอินเทอร์เฟซช่วยให้คุณเพิ่มวิธีการใหม่ลงในอินเทอร์เฟซโดยไม่ก่อให้เกิดปัญหา

  • อินเทอร์เฟซสามารถระบุเนื้อความสําหรับวิธีการโดยใช้การดําเนินการเริ่มต้น
  • คลาสที่ใช้อินเทอร์เฟซไม่จําเป็นต้องเขียนเวอร์ชันของตัวเองของวิธีการเหล่านี้
  • คุณลักษณะนี้จะช่วยเมื่อคุณต้องการเปลี่ยนอินเทอร์เฟซโดยไม่ทําให้อะไรเสียหาย

หมายเหตุ

แม้ว่าจะมีการใช้งานตามค่าเริ่มต้น แต่คลาสจะไม่ได้รับวิธีการของอินเทอร์เฟซโดยอัตโนมัติ ในการใช้วิธีการ จากอินเทอร์เฟซ ตัวแปรต้องเป็นของชนิดอินเทอร์เฟซ

ประโยชน์

การใช้งานเริ่มต้นในอินเทอร์เฟซมีประโยชน์หลายประการ:

  • นําโค้ดกลับมาใช้ใหม่: คุณสามารถแชร์ฟังก์ชันทั่วไปในการใช้งานที่แตกต่างกันโดยไม่ต้องคัดลอกโค้ด
  • ความเข้ากันได้ย้อนหลัง: คุณสามารถเพิ่มวิธีการใหม่ไปยังอินเทอร์เฟซโดยไม่ต้องเปลี่ยนคลาสทั้งหมดโดยใช้อินเทอร์เฟซเพื่อป้องกันการเปลี่ยนแปลงที่เสียหาย
  • ความยืดหยุ่น: คลาสที่ใช้อินเทอร์เฟซสามารถเปลี่ยนการใช้งานเริ่มต้นหากพวกเขาต้องการลักษณะการทํางานที่แตกต่างกัน

ตัวอย่างเช่น สมมติว่าคุณกําลังทํางานกับระบบการจัดการลูกค้าและคุณเพิ่มวิธีใหม่เพื่อใช้ส่วนลดความภักดีในอินเทอร์เฟซที่มีอยู่ วิธีการเริ่มต้นจะคํานวณส่วนลดพื้นฐาน แต่ถ้าระดับ "ลูกค้า VIP" ต้องการการคํานวณที่แตกต่างกัน จะสามารถปรับเปลี่ยนวิธีนี้ได้

กําหนดการใช้งานเริ่มต้น

ไวยากรณ์สําหรับการกําหนดการใช้งานเริ่มต้นในอินเทอร์เฟซจะขยายการประกาศอินเทอร์เฟซเพื่อรวมเนื้อความของเมธอด ตัวอย่างต่อไปนี้กําหนดการใช้งานเริ่มต้นในอินเทอร์เฟซตามสถานการณ์ของระบบการจัดการลูกค้า:

interface ICustomer
{
    int CustomerId { get; set; } // No default implementation

    void ApplyLoyaltyDiscount() 
    { 
        // default implementation
        Console.WriteLine("Applying 10% loyalty discount."); 
    }
}

ใน ApplyLoyaltyDiscount ตัวอย่างนี้ เมธอด มีการใช้งานเริ่มต้นภายใน ICustomer อินเทอร์เฟซ CustomerIdคุณสมบัติยังถูกกําหนดไว้ในอินเทอร์เฟซ แต่ไม่มีการดําเนินการตามค่าเริ่มต้น

หมายเหตุ

จาก C# 8.0 เป็นต้นไป อินเทอร์เฟซสามารถรวมการใช้งานวิธีการเริ่มต้นได้ การเปลี่ยนแปลงช่วยให้สามารถเพิ่มวิธีการใหม่ในอินเทอร์เฟซโดยไม่ต้องแบ่งโค้ดที่มีอยู่ คลาสสามารถใช้ค่าเริ่มต้นเหล่านี้หรือนําเสนอการใช้งานของตนเองได้

ถัดไป ใช้ระดับชั้น "VIPCustomer" ที่ต้องมีการคํานวณส่วนลดที่แตกต่างกัน คลาสนี้สามารถใช้ ICustomer อินเทอร์เฟซ ให้การดําเนินการของตนเองสําหรับ CustomerId คุณสมบัติ และแทนที่ ApplyLoyaltyDiscount วิธีการ ดังกล่าว:

class VIPCustomer : ICustomer
{
    public int CustomerId { get; set; } // Implementing property from interface

    void ICustomer.ApplyLoyaltyDiscount()
    {
        // override default implementation for VIP customers
        Console.WriteLine($"Applying 20% loyalty discount for VIP customer with ID {CustomerId}.");
    }
}

ในกรณีนี้ VIPCustomer คลาส จะใช้ส่วนลด 20% แทนที่จะเป็น 10%เริ่มต้น CustomerIdใช้ ในข้อความเมื่อใช้ส่วนลด

การดําเนินการตามค่าเริ่มต้นในอินเทอร์เฟซจะช่วยให้สามารถเพิ่มวิธีการใหม่ด้วยวิธีการที่ระบุไว้ในอินเทอร์เฟซ การใช้งานเริ่มต้นจะเลื่อนระดับการนําโค้ดกลับมาใช้ใหม่ ความเข้ากันได้ย้อนหลัง และความยืดหยุ่น เป็นเครื่องมือในทางปฏิบัติใน C# Object-Oriented การเขียนโปรแกรม ที่ช่วยเพิ่มความสามารถในการปรับตัวโดยไม่รบกวนโค้ดที่มีอยู่