类中实现同名同参方法仅接口名不同,该技术概念是什么?
显式接口实现(Explicit Interface Implementation)
这是C#中的显式接口实现技术,核心用来解决两类问题:一是类实现多个接口时,接口间存在同名成员的冲突;二是控制接口成员的访问范围——显式实现的接口成员只能通过接口类型的引用调用,无法直接通过类实例访问。
核心特性与作用
- 解决同名成员冲突:当类实现多个包含同名方法/属性的接口时,显式实现可以明确区分不同接口的对应成员
- 隐藏接口实现细节:显式实现的成员不会作为类的公共成员暴露,仅为满足接口契约存在,适合不需要对外公开的实现逻辑
结合代码示例解析
你的代码里,AuthClass同时提供了公共Login()方法,以及显式实现IAuth接口的Login()方法:
public class AuthClass : IAuth { // 类的公共Login方法 public string Login() { return "Method : You can be a developer"; } // 显式实现IAuth接口的Login方法(不能加public等访问修饰符) string IAuth.Login() { return "Interface: Please learn the concepts"; } }
调用逻辑的差异:
- 通过
AuthClass类型实例调用时,执行类的公共方法:var obj = new AuthClass(); Console.WriteLine(obj.Login()); // 输出: Method : You can be a developer - 将实例转换为
IAuth接口类型后调用时,执行显式实现的接口方法:var obj2 = new AuthClass() as IAuth; Console.WriteLine(obj2.Login()); // 输出: Interface: Please learn the concepts
注意事项
- 显式实现的成员不能添加任何访问修饰符(如
public),其访问权限由接口本身控制 - 显式实现的成员无法直接通过类实例调用,必须转换为对应接口类型后访问
- 典型应用场景:类需要实现多个带同名成员的接口,或需要隐藏接口实现细节的场景
内容的提问来源于stack exchange,提问作者hellowahab
相关产品推荐
相关产品推荐

