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

C# 程序員參考--版本控制教學文章

編輯:C#入門知識

本教程使用 overridenew 關鍵字來演示 C# 中的版本控制。版本控制在基類和派生類衍生時維護它們之間的兼容性。

教程

C# 語言被設計為不同庫中的基類和派生類之間的版本控制可以衍生,並保持向後兼容。例如,這意味著在基類中引入與派生類中的某個成員名稱相同的新成員不是錯誤。它還意味著類必須顯式聲明某方法是要重寫一個繼承方法,還是一個僅隱藏具有類似名稱的繼承方法的新方法。

在 C# 中,默認情況下方法不是虛擬的。若要使方法成為虛擬方法,必須在基類的方法聲明中使用 virtual 修飾符。然後,派生類可以使用 override 關鍵字重寫基虛擬方法,或使用 new 關鍵字隱藏基類中的虛擬方法。如果 override 關鍵字和 new 關鍵字均未指定,編譯器將發出警告,並且派生類中的方法將隱藏基類中的方法。下面的示例在實際操作中展示這些概念。

示例

// versioning.cs



// CS0114 expected



public class MyBase 



{



   public virtual string Meth1() 



   {



      return "MyBase-Meth1";



   }



   public virtual string Meth2() 



   {



      return "MyBase-Meth2";



   }



   public virtual string Meth3() 



   {



      return "MyBase-Meth3";



   }



}







class MyDerived : MyBase 



{



   // Overrides the virtual method Meth1 using the override keyword:



   public override string Meth1() 



   {



      return "MyDerived-Meth1";



   }



   // Explicitly hide the virtual method Meth2 using the new



   // keyword:



   public new string Meth2() 



   {



      return "MyDerived-Meth2";



   }



   // Because no keyword is specified in the following declaration



   // a warning will be issued to alert the programmer that 



   // the method hides the inherited member MyBase.Meth3():



   public string Meth3() 



   {



      return "MyDerived-Meth3";



   }







   public static void Main() 



   {



      MyDerived mD = new MyDerived();



      MyBase mB = (MyBase) mD;







      System.Console.WriteLine(mB.Meth1());



      System.Console.WriteLine(mB.Meth2());



      System.Console.WriteLine(mB.Meth3());



   }



}

輸出

MyDerived-Meth1



MyBase-Meth2



MyBase-Meth3

代碼討論

從派生類隱藏基類成員在 C# 中不是錯誤。該功能使您可以在基類中進行更改,而不會破壞繼承該基類的其他庫。例如,某個時候可能有以下類:

class Base {}



class Derived: Base



{



   public void F() {}



}

稍後基類可能演變為添加了一個 void 方法 F(),如下所示:

class Base 



{



   public void F() {}



}



class Derived: Base



{



   public void F() {}



}

因此,在 C# 中,基類和派生類都可以自由演變,並能夠維持二進制兼容性。

 

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