您好,登錄后才能下訂單哦!
小編給大家分享一下C#中的早期綁定和后期綁定是什么意思,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
早期綁定
早期綁定也稱靜態(tài)綁定,是指編譯時(shí)綁定;早期綁定對(duì)象基本上是強(qiáng)類型對(duì)象或靜態(tài)類型對(duì)象。
早期綁定在編譯期間識(shí)別并檢查方法、屬性、函數(shù),并在應(yīng)用程序執(zhí)行之前執(zhí)行其他優(yōu)化。在這個(gè)綁定中,編譯器已經(jīng)知道它是什么類型的對(duì)象以及它擁有的方法或?qū)傩浴?/p>
早期綁定的優(yōu)點(diǎn)
1、性能很快
2、易于編碼、開(kāi)發(fā)
3、減少了運(yùn)行時(shí)錯(cuò)誤的數(shù)量
示例:
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) { // 創(chuàng)建People類的對(duì)象 People g = new People(); // 調(diào)用People類的方法 g.details("Ankita", "C#"); // 調(diào)用“myMethod()”時(shí)出錯(cuò) // 因?yàn)檫@個(gè)方法不屬于People類,或者編譯器在編譯時(shí)不知道m(xù)ymethod() g.mymethod(); } }
編譯時(shí)發(fā)生錯(cuò)誤:
說(shuō)明:在上面的示例中,我們有一個(gè)名為People的類。該類包含details()方法。這里,編譯器已經(jīng)知道People中存在的屬性和方法。但是當(dāng)我們嘗試調(diào)用mymethod()時(shí),它會(huì)拋出一個(gè)錯(cuò)誤,因?yàn)榫幾g器不知道這個(gè)方法。
后期綁定
后期綁定也稱動(dòng)態(tài)綁定。在后期綁定中,編譯器不知道它是什么類型的對(duì)象以及它擁有的方法或?qū)傩裕@里的對(duì)象是動(dòng)態(tài)對(duì)象。對(duì)象的類型是根據(jù)它在運(yùn)行時(shí)在右側(cè)保存的數(shù)據(jù)來(lái)確定的?;旧?,是通過(guò)使用虛擬方法來(lái)實(shí)現(xiàn)后期綁定。
后期綁定的最大優(yōu)點(diǎn)是這種類型的對(duì)象可以保存對(duì)任何對(duì)象的引用,但缺少早期綁定對(duì)象的許多優(yōu)點(diǎn)。比如:后期綁定的性能比早期綁定慢,因?yàn)樗枰谶\(yùn)行時(shí)進(jìn)行查找。
示例:
using System; class GFG { static void Main() { // Dynamic objects dynamic obj = 4; dynamic obj1 = 5.678; // 顯示對(duì)象的類型 Console.WriteLine("對(duì)象類型為:"); // 使用getType()方法來(lái)獲取類型 Console.WriteLine(obj.GetType()); Console.WriteLine(obj1.GetType()); } }
輸出:
說(shuō)明:
在上面的示例中,obj保存整數(shù)類型數(shù)據(jù),obj1保存雙類型數(shù)據(jù)。但是編譯器不會(huì)在編譯時(shí)解決這些問(wèn)題。在運(yùn)行時(shí),這些動(dòng)態(tài)對(duì)象分別被檢測(cè)并轉(zhuǎn)換為System.Int32和System.Double。這就是為什么運(yùn)行時(shí)解析過(guò)程被稱為后期綁定的原因。
看完了這篇文章,相信你對(duì)C#中的早期綁定和后期綁定是什么意思有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。