تنفيذ الواجهات بشكل ضمني وصريح في 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