我正在攻读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。
答案 0 :(得分:10)
显式实现似乎完全是多余的。
我想不出一种方法可以把它称之为如果你把它留下来会有所作为。
有一个小的区别,隐式版本是虚拟的,意味着它可以被覆盖。将始终在此入口点调用显式版本。但由于它只调用虚拟成员,因此此处不使用差异。