Avatar ·

تنفيذ الواجهات بشكل ضمني وصريح في C#: متى وأي واحد نستخدم؟

مرحباً بالجميع! لقد بدأت للتو في تعلم C# وواجهت موضوع الواجهات (interfaces). يبدو الأمر واضحاً: الواجهة هي عقد (contract) والفئة (class) تقوم بتنفيذه. لكنني رأيت أنه يمكن تنفيذ الواجهات بطريقتين: بشكل ضمني (implicit) وبشكل صريح (explicit). وقد شعرت بالارتباك. إليك مثال:
public interface IWorker
{
    void Work();
}

public class Employee : IWorker
{
    // تنفيذ ضمني
    public void Work()
    {
        Console.WriteLine("Employee works");
    }
}
كل شيء يعمل. لكنني قرأت أنه يمكن القيام بذلك أيضاً:
public class Manager : IWorker
{
    // تنفيذ صريح
    void IWorker.Work()
    {
        Console.WriteLine("Manager works");
    }
}
والآن، إذا كتبت:
Manager m = new Manager();
m.Wor