<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 接口(C# 編程指南) 接口包含[類](https://msdn.microsoft.com/zh-CN/library/0b0thckt.aspx)或[結構](https://msdn.microsoft.com/zh-CN/library/ah19swz4.aspx)可以實現的一組相關功能的定義。 例如,使用接口可以在類中包括來自多個源的行為。 由于C#語言不支持多重繼承,所以該功能很重要。 此外,如果要模擬結構的繼承,也必須使用接口,因為它們無法實際從另一個結構或類繼承。 可使用 [interface](https://msdn.microsoft.com/zh-CN/library/87d83y5b.aspx) 關鍵字定義接口,如以下示例所示。 ``` interface IEquatable<T> { bool Equals(T obj); } ``` 實現 [IEquatable&lt;T&gt;](https://msdn.microsoft.com/zh-CN/library/ms131187.aspx) 接口的任何類或結構都必須包含與該接口指定的簽名匹配的 [Equals](https://msdn.microsoft.com/zh-CN/library/ms131190.aspx) 方法的定義。因此,可以依靠實現 IEquatable&lt;T&gt; 的類來包含 Equals 方法,類的實例可以通過該方法確定它是否等于相同類的另一個實例。 IEquatable&lt;T&gt; 的定義不為 Equals 提供實現。該接口僅定義簽名。這樣,C# 中的接口便類似于其中所有方法都是抽象方法的抽象類。但是,類或結構可以實現多個接口,但是類只能繼承單個類(抽象或不抽象)。因此,使用接口可以在類中包括來自多個源的行為。 有關抽象類的詳細信息,請參閱[抽象類、密封類及類成員](https://msdn.microsoft.com/zh-CN/library/ms173150.aspx)。 接口可以包含方法、屬性、事件、索引器或這四種成員類型的任意組合。有關示例的鏈接,請參閱[相關章節](#BKMK_RelatedSections)。接口不能包含常量、字段、運算符、實例構造函數、析構函數或類型。接口成員會自動成為公共成員,不能包含任何訪問修飾符。成員也不能是[靜態](https://msdn.microsoft.com/zh-CN/library/98f28cdx.aspx)成員。 若要實現接口成員,實現類的對應成員必須是公共、非靜態,并且具有與接口成員相同的名稱和簽名。 當類或結構實現接口時,類或結構必須為該接口定義的所有成員提供實現。接口本身不提供類或結構可以通過繼承基類功能的方式來繼承的任何功能。但是,如果基類實現接口,則從基類派生的任何類都會繼承該實現。 下面的示例演示 IEquatable&lt;T&gt; 接口的實現。實現類 Car 必須提供 [Equals](https://msdn.microsoft.com/zh-CN/library/ms131190.aspx) 方法的實現。 ``` public class Car : IEquatable<Car> { public string Make {get; set;} public string Model { get; set; } public string Year { get; set; } // Implementation of IEquatable<T> interface public bool Equals(Car car) { if (this.Make == car.Make && this.Model == car.Model && this.Year == car.Year) { return true; } else return false; } } ``` 類的屬性和索引器可以為接口中定義的屬性或索引器定義額外的訪問器。例如,一個接口可能會聲明一個具有 [get](https://msdn.microsoft.com/zh-CN/library/ms228503.aspx) 訪問器的屬性。實現該接口的類可以聲明同時具有 **get** 和 [set](https://msdn.microsoft.com/zh-CN/library/ms228368.aspx) 訪問器的相同屬性。但是,如果屬性或索引器使用顯式實現,則訪問器必須匹配。有關顯式實現的詳細信息,請參閱[顯式接口實現(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173157.aspx)和[接口屬性(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/64syzecx.aspx)。 接口可以實現其他接口。類可能通過它繼承的基類或通過其他接口實現的接口來多次包含某個接口。但是,類只能提供接口的實現一次,并且僅當類將接口作為類定義的一部分 (class ClassName : InterfaceName) 進行聲明時才能提供。如果由于繼承實現接口的基類而繼承了接口,則基類會提供接口的成員的實現。但是,派生類可以重新實現接口成員,而不是使用繼承的實現。 基類還可以使用虛擬成員實現接口成員。在這種情況下,派生類可以通過重寫虛擬成員來更改接口行為。有關虛擬成員的詳細信息,請參閱[多態性](https://msdn.microsoft.com/zh-CN/library/ms173152.aspx)。 ## 接口摘要 接口具有以下屬性: * 接口類似于抽象基類。實現接口的任何類或結構都必須實現其所有成員。 * 接口無法直接進行實例化。其成員由實現接口的任何類或結構來實現。 * 接口可以包含事件、索引器、方法和屬性。 * 接口不包含方法的實現。 * 一個類或結構可以實現多個接口。一個類可以繼承一個基類,還可實現一個或多個接口。 ## 本節內容 [顯式接口實現(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173157.aspx) 說明如何創建特定于接口的類成員。 [如何:顯式實現接口成員(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/44a9ty12.aspx) 提供有關如何顯式實現接口的成員的示例。 [如何:顯式實現兩個接口的成員(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/4taxa8t2.aspx) 提供有關如何使用繼承顯式實現接口的成員的示例。 <a id="BKMK_RelatedSections"></a> ## 相關章節 * [接口屬性(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/64syzecx.aspx) * [接口中的索引器(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/tkyhsw31.aspx) * [如何:實現接口事件(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ak9w5846.aspx) * [類和結構(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173109.aspx) * [繼承(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173149.aspx) * [方法(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173114.aspx) * [多態性(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173152.aspx) * [抽象類、密封類及類成員(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173150.aspx) * [屬性(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/x9fsa0sw.aspx) * [事件(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/awbftdfh.aspx) * [索引器(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/6x16t2tx.aspx) ## 重要章節 [Learning C# 3.0: Master the Fundamentals of C# 3.0(學習 C# 3.0:掌握 C# 3.0 的基本知識)](https://msdn.microsoft.com/library/orm-9780596521066-01.aspx)中的 [Interfaces(接口)](https://msdn.microsoft.com/library/orm-9780596521066-01-13.aspx) ## 請參閱 [C# 編程指南](https://msdn.microsoft.com/zh-CN/library/67ef8sbd.aspx) [繼承(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173149.aspx)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看