作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在进行升级时,我碰巧遇到了这样的代码。
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/
我是一名优秀的程序员,十分优秀!