Explicit interface implementation helps when a class needs to use two interfaces that have methods with the same name. It lets you tell the computer exactly which method belongs to which interface.
Explicit interface implementation in C Sharp (C#)
Start learning this pattern below
Jump into concepts and practice - no test required
class ClassName : InterfaceName { ReturnType InterfaceName.MethodName(Parameters) { // method body } }
The method is written with the interface name before the method name.
These methods can only be called through an interface reference, not directly from the class object.
Show. Each method is implemented explicitly to keep them separate.interface IFirst { void Show(); } interface ISecond { void Show(); } class MyClass : IFirst, ISecond { void IFirst.Show() { Console.WriteLine("First Show"); } void ISecond.Show() { Console.WriteLine("Second Show"); } }
Display method is implemented explicitly, so it can only be called through an IExample reference.interface IExample { void Display(); } class ExampleClass : IExample { void IExample.Display() { Console.WriteLine("Display from IExample"); } }
This program shows a class Speaker implementing two interfaces with the same method Speak explicitly. We call each method through the interface references to get different outputs.
using System; interface IAlpha { void Speak(); } interface IBeta { void Speak(); } class Speaker : IAlpha, IBeta { void IAlpha.Speak() { Console.WriteLine("Alpha speaks"); } void IBeta.Speak() { Console.WriteLine("Beta speaks"); } } class Program { static void Main() { Speaker sp = new Speaker(); IAlpha alpha = sp; IBeta beta = sp; alpha.Speak(); beta.Speak(); // sp.Speak(); // This would cause a compile error } }
You cannot call explicitly implemented methods directly from the class object.
Explicit implementation helps avoid name conflicts in multiple interface inheritance.
Use explicit implementation when you want to hide interface methods from the class's public API.
Explicit interface implementation separates methods with the same name from different interfaces.
These methods are only accessible through the interface, not the class object.
This technique helps avoid confusion and name conflicts in complex designs.
Practice
explicit interface implementation in C#?Solution
Step 1: Understand interface method conflicts
When a class implements multiple interfaces with methods of the same name, explicit implementation helps separate them.Step 2: Recognize explicit implementation behavior
Explicit interface methods are only accessible through the interface, avoiding confusion and conflicts.Final Answer:
To separate methods with the same name from different interfaces -> Option AQuick Check:
Explicit interface implementation = separate same-named methods [OK]
- Thinking explicit makes methods public on the class
- Assuming explicit allows calling without casting
- Confusing explicit with overriding base methods
Show() from interface IExample in class Demo?Solution
Step 1: Recall explicit implementation syntax
Explicit interface methods are implemented with the interface name before the method:void InterfaceName.MethodName().Step 2: Match correct syntax
void IExample.Show() { } matches this pattern exactly:void IExample.Show() { }.Final Answer:
void IExample.Show() { } -> Option CQuick Check:
Explicit syntax = void Interface.Method() [OK]
- Adding public modifier to explicit method
- Placing interface name after method name
- Using invalid syntax like 'void Show() IExample'
interface IA { void Display(); }
interface IB { void Display(); }
class Test : IA, IB {
void IA.Display() { Console.WriteLine("IA Display"); }
void IB.Display() { Console.WriteLine("IB Display"); }
}
var obj = new Test();
// obj.Display(); // Line A
((IA)obj).Display();
((IB)obj).Display();Solution
Step 1: Understand explicit interface calls
Explicit interface methods cannot be called directly on the class object, soobj.Display()causes error if uncommented.Step 2: Check interface casts and calls
Casting toIAcallsIA.Display()printing "IA Display"; casting toIBcallsIB.Display()printing "IB Display".Final Answer:
IA Display IB Display -> Option BQuick Check:
Explicit calls via interface = correct output [OK]
- Trying to call explicit method directly on class object
- Mixing output order
- Expecting runtime errors instead of compile errors
interface IAlpha { void Run(); }
class Beta : IAlpha {
public void IAlpha.Run() {
Console.WriteLine("Running");
}
}Solution
Step 1: Check explicit implementation rules
Explicit interface methods must not have access modifiers likepublic; they are implicitly private.Step 2: Identify error in code
The code usespublic void IAlpha.Run(), which is invalid syntax for explicit implementation.Final Answer:
Explicit interface method cannot have public modifier -> Option AQuick Check:
Explicit methods = no public keyword [OK]
- Adding public modifier to explicit methods
- Confusing explicit with normal method override
- Forgetting interface name in method signature
IX and IY both having method Process(), how can a class Worker implement both explicitly and allow calling Process() without casting?Solution
Step 1: Understand explicit implementation limits
Explicit interface methods are accessible only via interface references, not directly on class objects.Step 2: Provide public method to call explicit method
To callProcess()without casting, class must have a public method that internally calls one explicit interface method.Final Answer:
Implement explicit methods and add a public method calling one interface method -> Option DQuick Check:
Public wrapper calls explicit method = direct access [OK]
- Expecting explicit methods callable without casting
- Implementing only one interface explicitly
- Ignoring need for public wrapper method
