首頁  >  文章  >  後端開發  >  淺談C#中的早期綁定和後期綁定

淺談C#中的早期綁定和後期綁定

青灯夜游
青灯夜游原創
2019-01-31 15:27:033529瀏覽

當物件分配給物件變數時,編譯器執行稱為綁定的進程。 C#執行兩種不同類型的綁定:早期綁定和後期綁定。下面這篇文章就來帶大家認識這兩種綁定,希望對大家有幫助。

淺談C#中的早期綁定和後期綁定

早期綁定

#早期綁定也稱為靜態綁定,是指編譯時綁定定;早期綁定物件基本上是強類型物件或靜態類型物件。 【教學推薦:C#影片教學

早期綁定在編譯期間辨識並檢查方法、屬性、函數,並在應用程式執行之前執行其他最佳化。在這個綁定中,編譯器已經知道它是什麼類型的物件以及它擁有的方法或屬性。

早期綁定的優點

1、效能很快

2、易於編碼、開發

##3、減少了執行時期錯誤的數量

範例:

using System; 
  
class People { 
  
    // data members 
    public string name; 
    public string subject; 
  
    // public method 
    public void details(string name, string subject) 
    { 
        this.name = name; 
        this.subject = subject; 
        Console.WriteLine("我的名字是: " + name); 
        Console.WriteLine("我最喜欢的科目是: " + subject); 
    } 
} 
  
class GFG { 
  
    // Main 方法
    static void Main(string[] args) 
    { 
  
        // 创建People类的对象
        People g = new People(); 
  
        // 调用People类的方法 
        g.details("Ankita", "C#"); 
  
        // 调用“myMethod()”时出错
        // 因为这个方法不属于People类,或者编译器在编译时不知道mymethod()
        g.mymethod(); 
    } 
}

編譯時發生錯誤:

淺談C#中的早期綁定和後期綁定

##說明:

在上面的範例中,我們有一個名為People的類別。該類別包含details()方法。這裡,編譯器已經知道People中存在的屬性和方法。但是當我們嘗試呼叫mymethod()時,它會拋出一個錯誤,因為編譯器不知道這個方法。

後期綁定後期綁定也稱為動態綁定。在後期綁定中,編譯器不知道它是什麼類型的物件以及它擁有的方法或屬性,這裡的物件是動態物件。物件的類型是根據它在運行時在右側保存的資料來確定的。基本上,是透過使用虛擬方法來實現後期綁定。

後期綁定的最大優點是這種類型的物件可以保存對任何物件的引用,但缺少早期綁定物件的許多優點。例如:後期綁定的效能比早期綁定慢,因為它需要在運行時進行查找。

範例:

using System; 
  
class GFG { 
    static void Main() 
    { 
        // Dynamic objects 
        dynamic obj = 4; 
        dynamic obj1 = 5.678; 
  
        // 显示对象的类型
        Console.WriteLine("对象类型为:"); 
  
        // 使用getType()方法来获取类型
        Console.WriteLine(obj.GetType()); 
        Console.WriteLine(obj1.GetType()); 
    } 
}
輸出:

淺談C#中的早期綁定和後期綁定

說明:

在上面的範例中,obj保存整數類型數據,obj1保存雙類型數據。但是編譯器不會在編譯時解決這些問題。在運行時,這些動態物件分別被偵測並轉換為System.Int32和System.Double。這就是為什麼運行時解析過程被稱為後期綁定的原因。

以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !

以上是淺談C#中的早期綁定和後期綁定的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn