程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#學習筆記5

C#學習筆記5

編輯:C#入門知識

C#學習筆記5。本站提示廣大學習愛好者:(C#學習筆記5)文章只能為提供參考,不一定能成為您想要的結果。以下是C#學習筆記5正文


1.接口的顯式完成:顯式完成需求在完成接口的類型中,在完成接口的成員中添加接口稱號的前綴。且沒有必要添加public、virtual這些修飾符,由於顯式完成只能經過接口調用,不能用完成類停止調用。為此最典型的做法就是將對象轉型為接口。

2.接口的隱式完成:隱式完成即是正常理想,不需求在完成成員中添加接口稱號前綴,且完成成員都是public修飾。隱式完成的成員即可在完成類中停止內部調用,也可用接口停止調用。

3.顯示接口完成與隱式接口完成的比擬:隱式和顯式成員接口完成的關鍵區別顯然並不在於辦法聲明,而是在於從類內部的可訪問性。構建一個類層次構造時,有必要建模真實世界的“屬於”關系逐個例如,長頸鹿“屬於”哺乳植物,這些是“語義”關系,接口常常用於建模機制關系。顯式接口完成是將“機制方面的思索”與“模型方面的思索”分隔開的一種技術,要求調用者先將對象轉換為接口(如IComparable),然後才干以為對象是“可比擬”的。普通來說,最好的做法是將一個類的公共層面限制成“全模型”(即便用隱式接口完成),盡量少地觸及有關的機制。

4.如何選擇接口的顯示完成與隱式完成,可經過3個方面的思索。

①成員是不是中心的類功用,若不是可以思索顯式完成;

②接口成員名作為類成員能否恰當,假設一個成員的用處在完成類中不是很明白,就思索運用一個顯式的完成;

③能否曾經有一個同名的類成員,假設類曾經有一個辦法完成,那麼只需是一個顯式的接口成員,它就可以與那個辦法同名;

5.接口的承繼:在完成承繼的接口中,用於顯式接口成員完成的一個完全限定的接口成員稱號中,必需援用最初聲明它的那個接口的名昨。是提供多個接口,還是獨自提供一個復合接口,這個決策在很大水平上依賴於接口設計者關於類的實理有什麼要求。

6.經過接口來完成多重承繼:雖然類只能從一個基類派生,但可以完成多個接口,因而可以像上一章那樣運用聚合來處置多重承繼。可以檢查Contact2、Person2的代碼,與上一章的區別在於前者是經過類來處置,後者經過接口來規則簽名。IPerson 確保 Person2 的成員和復制到 Contact2 的成員具有分歧的簽名,但是這個完成依然沒有做到與“多重承繼”真正同義,由於添加到 Person2 的新成並不會同時添加到 Contact2上。假如被完成的成員是辦法(不是屬性 ),那麼有一個方法可以對此停止改良,詳細地說,就是為從第二個基類(接口)“派生”的附加功用定義接口擴展辦法。(當然在具有相反簽名的狀況下,任何實例辦法都優先於擴展辦法)

public class PdaItem
{
    public DateTime CreateTime { get; set; }
    public DateTime ModifyTime { get; set; }
    public string Name { get; set; }
    protected string ObjectKey { get; set; } 
}

public interface IPerson
{
    string FirstName { get; set; }
    string LastName { get; set; }
}

public class Person2 : IPerson
{
    public string FirstName
    {
        get { throw new NotImplementedException(); }

        set { throw new NotImplementedException(); }
    }

    public string LastName
    {
        get { throw new NotImplementedException(); }

        set { throw new NotImplementedException(); }
    }
}

public class Contact2 : PdaItem, IPerson
{
    private Person2 person2;

    public string FirstName
    {
        get { return person2.FirstName; }

        set { person2.FirstName = value; }
    }

    public string LastName
    {
        get { return person2.LastName; }

        set { person2.LastName = value; }
    }
}

-------------------以上內容依據《C#實質論 第三版》停止整理

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved