interface ICloneable { object Clone(); } class C: ICloneable { object ICloneable.Clone() {...} public object Clone() {...} }the ICloneable.Clone member of C becomes the implementation of Clone in ICloneable because explicit interface member implementations take precedence over other members. end example] Paragraph 61 If a class or struct implements two or more interfaces containing a member with the same name, type, and parameter types, it is possible to map each of those interface members onto a single class or struct member. [Example: For example
interface IControl { void Paint(); } interface IForm { void Paint(); } class Page: IControl, IForm { public void Paint() {...} }Here, the Paint methods of both IControl and IForm are mapped onto the Paint method in Page. It is of course also possible to have separate explicit interface member implementations for the two methods. end example] Paragraph 71 If a class or struct implements an interface that contains hidden members, then some members must necessarily be implemented through explicit interface member implementations. [Example: For example
interface IBase { int P { get; } } interface IDerived: IBase { new int P(); }An implementation of this interface would require at least one explicit interface member implementation, and would take one of the following forms
class C: IDerived { int IBase.P { get {...} } int IDerived.P() {...} } class C: IDerived { public int P { get {...} } int IDerived.P() {...} } class C: IDerived { int IBase.P { get {...} } public int P() {...} }end example] Paragraph 81 When a class implements multiple interfaces that have the same base interface, there can be only one implementation of the base interface. [Example: In the example
interface IControl { void Paint(); } interface ITextBox: IControl { void SetText(string text); } interface IListBox: IControl { void SetItems(string[] items); } class ComboBox: IControl, ITextBox, IListBox { void IControl.Paint() {...} void ITextBox.SetText(string text) {...} void IListBox.SetItems(string[] items) {...} }it is not possible to have separate implementations for the IControl named in the base class list, the IControl inherited by ITextBox, and the IControl inherited by IListBox. Indeed, there is no notion of a separate identity for these interfaces. Rather, the implementations of ITextBox and IListBox share the same implementation of IControl, and ComboBox is simply considered to implement three interfaces, IControl, ITextBox, and IListBox. end example] Paragraph 91 The members of a base class participate in interface mapping. [Example: In the example
interface Interface1 { void F(); } class Class1 { public void F() {} public void G() {} } class Class2: Class1, Interface1 { new public void G() {} }the method F in Class1 is used in Class2's implementation of Interface1. end example]
| |
Jagger Software Ltd | |
Company # 4070126 | |
VAT # 762 5213 42 |