تنفيذ الواجهات بشكل ضمني وصريح في C#: متى وأي واحد نستخدم؟
مرحباً بالجميع! لقد بدأت للتو في تعلم C# وواجهت موضوع الواجهات (Interfaces). يبدو كل شيء واضحاً: الواجهة هي عقد (contract)، والفئة (class) تقوم بتنفيذه. لكنني رأيت أنه يمكن تنفيذ الواجهات بطريقتين: بشكل ضمني (implicit) وبشكل صريح (explicit). وقد شعرت بالارتباك.
إليك مثال:
public interface IWorker
{
void Work();
}
public class Employee : IWorker
{
// تنفيذ ضمني (Implicit implementation)
public void Work()
{
Console.WriteLine("Employee works");
}
}
كل شيء يعمل. لكنني قرأت أنه يمكن القيام بذلك أيضاً:
public class Manager : IWorker
{
// تنفيذ صريح (Explicit implementation)
void IWorker.Work()
{
Console.WriteLine("Manager works");
}
}
والآن، إذا كتبت:
Manager m = new Manager();
m.Wor