首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 與 VB.NET 跨語言繼承實作指南

     編輯:關於C#

.NET 通用語言執行平台 (CLR) 支援多語言互操作,C# 定義的類別可被 VB.NET 繼承,反之亦然。本文示範 VB.NET 定義基類、C# 繼承衍生類、VB.NET 消費端呼叫的完整跨語言繼承流程。

1. 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。

2. C# 定義衍生類專案

建立 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。

3. VB.NET 消費端應用程式

建立 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

執行結果

  1. 點擊按鈕 → 先彈出 "CsDerivedClass Constructor" (C# 建構函式)
  2. 再彈出 "Parent DoSomething" (VB.NET 基類方法)

跨語言繼承注意事項

  • CLS 相容性:公開 API 應符合 CLS (Common Language Specification),避免使用大小寫區分命名、無符號整數、不安全指標等非 CLS 特性。
  • 存取修飾詞對應:C# public/protected/internal/private ↔ VB.NET Public/Protected/Friend/Private。
  • 建構函式鏈:衍生類建構函式隱含呼叫基類無參建構函式;若基類無無參建構函式,衍生類必須显式呼叫 base(...) (C#) 或 MyBase.New(...) (VB)。
  • 事件與委派:C# event 對應 VB.NET Event,跨語言訂閱/觸發無縫銜接。
  • 屬性語法:C# get/set、VB.NET Get/Set,編譯後 IL 相同。

實務建議

  • 核心領域模型、基礎設施庫用單一語言(通常 C#)開發,減少認知負擔。
  • 跨語言繼承多用於漸進式遷移、團隊技能互補、第三方庫擴充等場景。
  • 建置順序:基類專案 → 衍生類專案 → 消費端專案,或使用方案層級專案相依性自動排序。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved