C#中带接口限定的属性实现语法叫什么?有什么作用?
语法名称
你遇到的这个C#语法官方名称为 显式接口实现。
核心含义
你的ComplexDefinition类同时实现了多个包含同名ElementC成员的接口:一个需要返回IActorCompositionLevel2类型的公开ElementC属性,另一个是泛型接口IElementC<IActorCompositionLevel1>中定义的、返回IActorCompositionLevel1类型的ElementC属性。当类实现的多个接口存在同名成员,或者你希望特定接口的成员仅在接口类型下可见时,就需要用显式接口实现来区分不同接口的同名成员。
使用规则
- 显式实现的接口成员不能添加任何访问修饰符,它默认只有当变量被声明为对应接口类型时才可见,直接用类的实例访问时不会显示这个成员。
- 固定语法格式为:
返回值类型 接口名.成员名,你疑问的那行代码就是显式实现IElementC<IActorCompositionLevel1>接口的ElementC属性。 - 调用规则示例:
var complexInstance = new ComplexDefinition(); // 这里调用的是你熟悉的公开ElementC属性,返回IActorCompositionLevel2类型 var level2Actor = complexInstance.ElementC; // 只有将实例转换为对应接口类型时,才会调用显式实现的ElementC IElementC<IActorCompositionLevel1> interfaceInstance = complexInstance; var level1Actor = interfaceInstance.ElementC;
常见适用场景
- 类实现的多个接口存在同名、参数列表一致但逻辑/返回类型不同的成员,此时必须用显式接口实现区分,否则会触发编译错误。
- 需要隐藏接口成员实现:如果你不希望某个接口的成员直接暴露给类的实例调用,只允许在使用接口类型访问时生效,可以用显式接口实现隐藏实现细节。
内容的提问来源于stack exchange,提问作者monty
相关产品推荐
相关产品推荐

