程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#與VB的交叉繼承

C#與VB的交叉繼承

編輯:關於C#

VB.NET可以創建處理代碼,這些處理代碼是運行在.NET框架上的。所有的管理代碼可以和其它類型的處理代碼交互作用,而不管我們是用什麼編程語言來創建這些組件的。這就意味著我們可以在一種編程語言上創建一個類,然後應用到另外的編程語言中,當然也包括繼承。這正式交叉語言混繼承的混合編程機理。

實際上,現在有許多程序涉及人員已經在應用這個技術了。許多的.NET系統類庫是在C#上編寫的,而我們在VB.NET上編寫程序的時候,可以繼承這些類作為基類。

創建VB.NET基類

舉個例子,我們可以在VB.NET創建一個類庫工程取名為vblib並且增加一個簡單的類為Parent,代碼如下:

1Public Class ParentClass Parent
2  Public Sub DoSomething()Sub DoSomething()
3   MsgBox(Parent DoSomething, MsgBoxStyle.Information, Parent)
4  End Sub
5End Class

利用這個基類我們可以在C#上創建一個子類。

創建C#子類

我們可以增加一個新類庫工程,具體做法是使用菜單File(文件)->AddProject(增加工程)並將它命名為cslib。接著通過選擇菜單Project(工程)->AddReference(增加引用)來增加一個引用到vblib工程。

當我們在IDE中直接引用這個工程的時候,我們不需要VB.NET的源代碼。相反地,我們可以先創建vblib工程,再創建一個組件,接著從C#工程中引用這個組件來得到訪問基類的目的,代碼如下:

1namespace cslib
2{
3  using System.WinForms;
4  using vblib;
5
6  public class csclass : Parent
7  {
8   public csclass()
9   {
10     Messagebox.Show(csclass constructor);
11   }
12  }
13}

以上這個C#代碼共享了VB.NET中的代碼。但是,C#的語法很大程度上來自C和C++語言,所以編程會變得復雜一點。所有的代碼語句的最後要以分號(;)結束,並且利用左右括號({和})來定義一個塊結構。而在VB.NET中定義一個塊結構是利用Sub...EndSub語句,這正是VB.NET和C#語法上的一個差別,所以在利用VB.NET和C#混合編程的時候一定要注意到語法的差別。

我們還是仔細體會體會上面的代碼吧。代碼的第一行是為文件定義了名空間(namespace)。在C#中所有的名空間是顯式定義在每一個代碼模塊中的:

1 Namespace cslib   在C#中的using關鍵字等價於在VB.NET中的Imports關鍵字。因為我們要使用System.WinForms和來自vblib的名空間,所以我們使用以下的語句來引入這些名空間:

1 Using System.WinForms;

2 Using vblib;   代碼接下去的一行是聲明我們要創建的類以及表明這個類是Parent的一個子類:

1 Public class csclass:Parent   在C#中一個子類是通過定義一個類來定義的,具體語法是類名之後加冒號(:),然後再加基類。這條語句等價於如下VB.NET的代碼:

1 Public Class csclass

2 Inherits Parent

在VB.NET中構造函數是通過使用保留的方法New來創建的。而在C#中構造函數是使用類名作為方法的名字來創建的,例如:

1public csclass()
2{
3  Messagebox.Show(csclass constructor);
4}

在C#中,大括號({和})定義一個塊結構,而在這個塊結構中我們可以放置方法的代碼。在這個例子中的方法很簡單,只是顯示一個對話框來指示構造函數被調用了而已。至此我們就可以為新工程創建客戶代碼了。

創建客戶應用程序

首先可以使用菜單File(文件)->AddProject(增加工程)來增加一個新的VB.NET的Windows應用程序工程。在這個新工程可以選擇菜單項Project(工程)->AddReference(增加引用)來為cslib工程增加一個引用。在工程中點擊鼠標右鍵並從彈出的菜單中選擇SetAsStartupProject選項,這樣做的目的是當你按下F5快捷鍵的時候工程就運行。

這裡值得注意的是,vblib工程沒有任何的引用,這是因為我們沒有直接使用來自組件的任何代碼。所有的客戶應用程序所關心的是cslib工程。

當我們在IDE中直接引用cslib工程的時候,我們不需要C#代碼。相反地,我們可以先創建cslib工程,再創建一個組件,接著引用來自客戶工程的組件以訪問我們的測試C#類。接著我們還要增加一個按鈕到窗體中,並為該按鈕編寫以下的代碼:

1Protected Sub Button1_Click()Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
2  Dim obj As New cslib.csclass()
3  obj.DoSomething()
4End Sub 
 

雖然創建一個VB.NET的子類也是沒什麼差別的,但是在本例子中我們是使用了不同的編程語言來實現的。其中的差別大家仔細體會,相信會對你有所幫助。

好了,當我們運行應用程序並點擊按鈕的時候,我們就可以看到一個對話框,對話框上面顯示了我們所調用的csclass的構造函數;以及另外一個對話框,其上面顯示了我們所調用的VB.NET基類的DoSomething方法。

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