c# – 我应该显式还是隐式地实现接口成员?

This questionEric Lippert’s answer让我想知道:在实现接口方法时,您如何决定是使用显式还是隐式实现?
最佳答案
(个人)当具有相同签名的方法之间存在冲突时,我只看到需要显式实现.

例如,在实现IEnumerable< T>时,您应该实现2个方法GetEnumerator(),它们具有相同的签名,但返回类型除外.所以你必须明确地实现IEnumerable.GetEnumerator():

public abstract class MyClass<T> : IEnumerable<T>
{
    public IEnumerator<T> GetEnumerator()
    {
        return ...;
    }

    IEnumerator IEnumerable.GetEnumerator() // explicit implementation required
    {
        return GetEnumerator();
    }
}

显式实现的另一个用途是,如果您不希望通过对象实例调用该方法,而只需通过接口调用该方法.我个人认为这没有多大意义,但在一些非常罕见的情况下,它可能是有用的.

转载注明原文:c# – 我应该显式还是隐式地实现接口成员? - 代码日志