溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解C#虛擬方法

發布時間:2021-11-22 18:30:09 來源:億速云 閱讀:591 作者:柒染 欄目:編程語言

這期內容當中小編將會給大家帶來有關如何理解C#虛擬方法,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

當類中的方法聲明前加上了virtual修飾符,我們稱之為C#虛擬方法 ,反之為非虛。使用了virtual修飾符后,不允許再有static、abstract或override修飾符。對于非虛的方法,無論被其所在類的實例調用,還是被這個類的派生類的實例調用,方法的執行方式不變。而對于虛方法,它的執行方式可以被派生類改變,這種改變是通過方法的重載來實現的。

下面的例子說明了C#虛擬方法與非虛方法的區別。

例子:

using System;  class A  {     public void F(){Console.WriteLine("A.F");}     public virtual void G(){Console.WriteLine("A.G");}  }  class B:A  {     new public void F(){Console.WriteLine("B.F");}     public override void G(){Console.WriteLine("B.G");}  }  class Test  {     static void Main()     {        B b=new B();        A a=b;        a.F();        b.F();        a.G();        b.G();     }  }

例子中,A類提供了兩個方法:非虛的F和C#虛擬方法 G.類B則提供了一個新的非虛的方法F,從而覆蓋了繼承的F;類B同時還重載了繼承的方法G.那么輸出應該是:

A.F

B.F

B.G

B.G

注意到本例中,方法a.G()實際調用了B.G,而不是A.G.這是因為編譯時值為A,但運行時值為B,所以B完成了對方法的實際調用。

上述就是小編為大家分享的如何理解C#虛擬方法了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女