相关疑难解决方法(0)

隐式vs显式接口实现

可能重复:
C#:接口 - 隐式和显式实现

有人会解释这两种野兽之间的差异以及如何使用它们.AFAIK,许多pre.2.0类在没有泛型类型的情况下实现,因此导致后一版本实现这两种接口.是否需要使用它们的唯一情况?

你能否深入解释如何使用它们?

谢谢

.net c# interface

73
推荐指数
2
解决办法
4万
查看次数

IEnumerable和IEnumerable <T>之间的区别?

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>还不够吗?

同样,还有其他类似的对:

  • IListIList<T>
  • ICollectionICollection<T>

我也想知道这些.

c# generics ienumerable ilist icollection

48
推荐指数
2
解决办法
1万
查看次数

接口的隐式和显式实现

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

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:我理解接口的显式实现非常重要,它可以在我们需要仅在接口级别访问方法时使用,并且使用具有相同签名方法的两个接口.

.net c# interface

12
推荐指数
1
解决办法
489
查看次数

标签 统计

c# ×3

.net ×2

interface ×2

generics ×1

icollection ×1

ienumerable ×1

ilist ×1