gpt4 book ai didi

c# - 接口(interface)的隐式和显式实现

转载 作者:可可西里 更新时间:2023-11-01 08:24:44 26 4
gpt4 key购买 nike

在进行升级时,我碰巧遇到了这样的代码。

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();
}
}

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

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

最佳答案

是的。看起来多余。

通过 Customization 类型的引用和 ICustomization 类型的引用调用它会导致相同的行为。如果您希望以下调用的行为有所不同,那么显式实现该接口(interface)是有意义的。

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

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

关于c# - 接口(interface)的隐式和显式实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2756520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com