c# – 接口的隐式和显式实现

在升级工作的时候,我遇到了一个这样的代码.

interface ICustomization
    {
        IMMColumnsDefinition GetColumnsDefinition();
    }

    class Customization : ICustomization
    {
        private readonly ColumnDefinition _columnDefinition;

        //More code here.

        public ColumnsDefinition GetColumnsDefinition()
        {
            return _columnDefinition;
        }

        ColumnsDefinition ICustomization.GetColumnsDefinition()  //redundant
        {
            return GetColumnsDefinition();            
        }
    }

我的问题是:
在这段代码中是否需要/使用“显式”实现接口?
如果我删除了我在上面标记了“冗余”的方法(显式实现接口),它会创建任何问题吗?

PS:我明白界面的显式实现是非常重要的,当我们只需要在接口级别访问一个方法,并且使用具有相同的方法签名的两个接口时,可以使用它.

最佳答案
对.看起来很多

通过自定义类型的引用和ICustomization类型的引用调用它会导致相同的行为.如果您希望以下调用的行为有所不同,那么明确实现该接口将是有意义的.

Customization oVar = new Customization();
oVar.GetColumnsDefinition(); // calls 1st method
ICustomization iVar = obj;
iVar.GetColumnsDefinition(); // calls 2nd method - explicit impl.

你应该删除显式的实现.但是,如果您删除其他实现,您将限制客户端,使其无法再调用oVar.GetColumnsDefintion() – 它们将必须使用如上所示的接口变量.

转载注明原文:c# – 接口的隐式和显式实现 - 代码日志