可能重复:
C#:接口 - 隐式和显式实现
有人会解释这两种野兽之间的差异以及如何使用它们.AFAIK,许多pre.2.0类在没有泛型类型的情况下实现,因此导致后一版本实现这两种接口.是否需要使用它们的唯一情况?
你能否深入解释如何使用它们?
谢谢
IEnumerable和之间有什么区别IEnumerable<T>?
我已经看到很多框架类实现了这两个接口,因此我想知道通过实现它们可以获得哪些优势?
请看看他们是如何定义的:
public interface IEnumerable
{
[DispId(-4)]
IEnumerator GetEnumerator();
}
public interface IEnumerable<T> : IEnumerable
{
IEnumerator<T> GetEnumerator();
}
Run Code Online (Sandbox Code Playgroud)
正如我们所看到的,IEnumerable<T>源于IEnumerable,这意味着无论IEnumerable有什么,IEnumerable<T>继承,那么为什么我们实现两者而不仅仅是IEnumerable<T>?实施IEnumerable<T>还不够吗?
同样,还有其他类似的对:
IList 和 IList<T> ICollection 和 ICollection<T>我也想知道这些.
在进行升级时,碰巧碰到了这样的代码.
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();
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:在这段代码中是否需要/使用"显式"接口实现?如果我删除上面标记为"冗余"的方法(显式实现接口)会不会产生任何问题?
PS:我理解接口的显式实现非常重要,它可以在我们需要仅在接口级别访问方法时使用,并且使用具有相同签名方法的两个接口.