⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8.9.htm

📁 This ECMA Standard specifies the form and establishes the interpretation of programs written in the
💻 HTM
字号:
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Hyperlinked ECMA C# Language Specification</title><meta name="author" content="Jon Jagger" /><link rel="stylesheet" href="ecma334.css"></link></head><body><div align="right"><em><a href="http://www.jaggersoft.com">Jon Jagger</a></em></div><div align="right"><a href="mailto:jon@jaggersoft.com">jon@jaggersoft.com</a></div><form method="get" action="http://search.atomz.com/search/"><input size="30" name="sp-q"></input><input type="submit" value="Search C# Spec"></input><input type="hidden" name="sp-a" value="sp10024177"></input><input type="hidden" name="sp-f" value="ISO-8859-1"></input></form><a href="toc.htm">Table of Contents</a> <a href="1.htm">1</a> <a href="2.htm">2</a> <a href="3.htm">3</a> <a href="4.htm">4</a> <a href="5.htm">5</a> <a href="6.htm">6</a> <a href="7.htm">7</a> <a href="8.htm">8</a> <a href="9.htm">9</a> <a href="10.htm">10</a> <a href="11.htm">11</a> <a href="12.htm">12</a> <a href="13.htm">13</a> <a href="14.htm">14</a> <a href="15.htm">15</a> <a href="16.htm">16</a> <a href="17.htm">17</a> <a href="18.htm">18</a> <a href="19.htm">19</a> <a href="20.htm">20</a> <a href="21.htm">21</a> <a href="22.htm">22</a> <a href="23.htm">23</a> <a href="24.htm">24</a> <a href="25.htm">25</a> <a href="notes.htm">Notes</a> <a href="HyperlinkedCSharpECMA.zip">Download</a><span class="ruler"></span><span class="heading">ECMA-334 C# Language Specification</span><span class="navigate"><a href="8.8.htm"><img src="previous.gif" alt="previous" border="0" /></a><a href="8.10.htm"><img src="next.gif" alt="next" border="0" /></a></span><span class="clause-depth"><a href="7.htm"><img src="previous.gif" alt="previous at this level" border="0" /></a><a href="9.htm"><img src="next.gif" alt="next at this level" border="0" /></a> <span class="clause-number-link"><a href="8.htm">8</a></span><span class="clause-title-previous"> Language Overview</span></span><span class="clause-depth"><a href="8.8.htm"><img src="previous.gif" alt="previous at this level" border="0" /></a><a href="8.10.htm"><img src="next.gif" alt="next at this level" border="0" /></a> <span class="clause-number">8.9</span><span class="clause-title"> Interfaces</span></span><span class="informative"><span class="paragraph">An interface defines a contract. A class or struct that implements an interface must adhere to its contract. Interfaces can contain methods, properties, events, and indexers as members. </span><span class="paragraph">The example <pre class="code-example">
interface IExample  
{  
   string this[int index] { get; set; }  
   event EventHandler E;  
   void F(int value);  
   string P { get; set; }  
}  
public delegate void EventHandler(object sender, EventArgs e);  
</pre>shows an interface that contains an indexer, an event E, a method F, and a property P. </span><span class="paragraph">Interfaces may employ multiple inheritance. In the example <pre class="code-example">
interface IControl  
{  
   void Paint();  
}  
interface ITextBox: IControl  
{  
   void SetText(string text);  
}  
interface IListBox: IControl  
{  
   void SetItems(string[] items);  
}  
interface IComboBox: ITextBox, IListBox {}  
</pre>the interface IComboBox inherits from both ITextBox and IListBox. </span><span class="paragraph">Classes and structs can implement multiple interfaces. In the example <pre class="code-example">
interface IDataBound  
{  
   void Bind(Binder b);  
}  
public class EditBox: Control, IControl, IDataBound  
{  
   public void Paint() {...}  
   public void Bind(Binder b) {...}  
}   
</pre>the class EditBox derives from the class Control and implements both IControl and IDataBound. </span><span class="paragraph">In the previous example, the Paint method from the IControl interface and the Bind method from IDataBound interface are implemented using public members on the EditBox class. C# provides an alternative way of implementing these methods that allows the implementing class to avoid having these members be public. Interface members can be implemented using a qualified name. For example, the EditBox class could instead be implemented by providing IControl.Paint and IDataBound.Bind methods. <pre class="code-example">
public class EditBox: IControl, IDataBound  
{  
   void IControl.Paint() {...}  
   void IDataBound.Bind(Binder b) {...}  
}  
</pre></span><span class="paragraph">Interface members implemented in this way are called explicit interface members because each member explicitly designates the interface member being implemented. Explicit interface members can only be called via the interface. For example, the EditBox's implementation of the Paint method can be called only by casting to the IControl interface. <pre class="code-example">
class Test  
{  
   static void Main() {  
      EditBox editbox = new EditBox();  
      editbox.Paint();  // error: no such method  
      IControl control = editbox;  
      control.Paint();  // calls EditBox's Paint implementation  
   }  
}  
</pre></span></span><span class="ruler"></span><table><tr><td><table align="left" bgcolor="navy"><tr bgcolor="navy"><td><font face="Arial,sans-serif" size="6" color="yellow"><strong>{ JSL }</strong></font></td></tr></table></td></tr><tr><td><font face="Arial,sans-serif" size="2" color="navy"><strong>Jagger Software Ltd</strong></font></td></tr><tr><td><font face="Arial,sans-serif" size="2" color="navy"><strong>Company # 4070126</strong></font></td></tr><tr><td><font face="Arial,sans-serif" size="2" color="navy"><strong>VAT # 762 5213 42</strong></font></td></tr></table><img src="valid-html401.png" align="left" height="31" width="88" alt="Valid HTML 4.01" /><img src="vcss.gif" align="left" height="31" width="88" alt="Valid CSS" /></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -