您好,登錄后才能下訂單哦!
小編給大家分享一下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(); } }
編譯時發生錯誤:
說明:在上面的示例中,我們有一個名為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()); } }
輸出:
說明:
在上面的示例中,obj保存整數類型數據,obj1保存雙類型數據。但是編譯器不會在編譯時解決這些問題。在運行時,這些動態對象分別被檢測并轉換為System.Int32和System.Double。這就是為什么運行時解析過程被稱為后期綁定的原因。
看完了這篇文章,相信你對C#中的早期綁定和后期綁定是什么意思有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。