.NET 通用語言執行平台 (CLR) 支援多語言互操作,C# 定義的類別可被 VB.NET 繼承,反之亦然。本文示範 VB.NET 定義基類、C# 繼承衍生類、VB.NET 消費端呼叫的完整跨語言繼承流程。
建立 Class Library 專案 VbLib,加入類別 ParentClass:
' VbLib/ParentClass.vb
Public Class ParentClass
Public Sub DoSomething()
MessageBox.Show("Parent DoSomething", "Parent", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
End Class
建置產生 VbLib.dll。
建立 Class Library 專案 CsLib,加入參考 VbLib.dll,定義衍生類:
// CsLib/CsDerivedClass.cs
using System.Windows.Forms;
using VbLib;
namespace CsLib
{
public class CsDerivedClass : ParentClass
{
public CsDerivedClass()
{
MessageBox.Show("CsDerivedClass Constructor", "C#", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
// 可覆寫基類虛擬方法
// public override void DoSomething() { ... }
}
}
關鍵語法差異:C# 用 class Derived : Base 表示繼承,VB.NET 用 Inherits Base。
建立 Windows Forms App 專案 VbClient,加入參考 CsLib.dll,表單按鈕事件:
' VbClient/Form1.vb
Imports CsLib
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim obj As New CsDerivedClass()
obj.DoSomething() ' 呼叫基類方法
End Sub
End Class
public/protected/internal/private ↔ VB.NET Public/Protected/Friend/Private。base(...) (C#) 或 MyBase.New(...) (VB)。event 對應 VB.NET Event,跨語言訂閱/觸發無縫銜接。get/set、VB.NET Get/Set,編譯後 IL 相同。