实现接口隐式和显式是否有意义?

时间:2012-04-15 19:29:11

标签: c# interface implicit explicit

我正在攻读MS 70-515考试。在其中一个实践中,作者实现了隐式和显式的接口。显式实现只调用隐式实现。列出的显式实现没有解释。

同时拥有接口的隐式和显式实现是否有意义?我认为显式实现是多余的(在这种情况下)。

public class PassTextBox : TextBox, IScriptControl
{
    public virtual IEnumerable<ScriptDescriptor> GetScriptDescriptors()
    {
        var descriptor = new ScriptControlDescriptor(
            "AjaxEnabled.PassTextBox", ClientID);
        // ...
        return new ScriptDescriptor[] {descriptor};
    }

    IEnumerable<ScriptDescriptor> IScriptControl.GetScriptDescriptors()
    {
        return GetScriptDescriptors();
    }
}
顺便说一句,代码似乎在没有显式实现的情况下运行得很好,因为隐式实现是公开的。

准确地说,它涉及MCTS Self-Paced Training Kit (Exam 70-515): Web Applications Development with Microsoft .NET Framework 4第9章,第2课,练习3。

1 个答案:

答案 0 :(得分:10)

显式实现似乎完全是多余的。

我想不出一种方法可以把它称之为如果你把它留下来会有所作为。

有一个小的区别,隐式版本是虚拟的,意味着它可以被覆盖。将始终在此入口点调用显式版本。但由于它只调用虚拟成员,因此此处不使用差异。