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

jas*_*onh 8 c#

这个问题埃里克利珀的回答让我疑惑:如何决定是否要实现接口的方法时,使用显式或隐式的执行?

Phi*_*ert 8

(个人)当具有相同签名的方法之间存在冲突时,我只看到需要显式实现.

例如,在实现时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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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