You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB中继承Common的类A实例化时如何跳过父类构造函数避免报错

解决方案

问题根因

  • 你的类A中接收C.CsvGenerator参数的构造函数存在两处问题:
    1. 代码笔误:参数名为objCsv,但赋值语句错误写为_objCsv = objCsvGenerator,引用了不存在的变量
    2. 未显式指定父类构造函数:VB.NET默认会为子类构造函数自动匹配父类构造,匹配到带参数的父类构造时就会出现你遇到的类型不匹配报错
  • .NET继承机制下无法完全跳过父类构造函数的调用,但可以选择调用父类的无参构造,避开带参数的构造逻辑,满足你的需求。

具体修改方法

  1. 修正类A的Friend构造函数,显式指定调用父类Common的无参构造,同时修正笔误:
Friend Sub New(ByVal objCsv As C.CsvGenerator)
    ' 显式调用父类无参构造,不会触发带参数的父类构造,避免类型不匹配
    MyBase.New()
    ' 修正变量名错误
    _objCsv = objCsv
End Sub
  1. 删掉类A中多余的语法错误End Sub,修正后完整的类A代码如下:
Public Class A 
    Inherits Common
    Public _objCsv As C.CsvGenerator

    Friend Sub New(ByVal objCsv As C.CsvGenerator)
        MyBase.New()
        _objCsv = objCsv
    End Sub

    Public Sub New()
        MyBase.New()
    End Sub

    Public Sub New(ByVal objRSReportObj As Object)
        MyBase.New(objRSReportObj)
        InitializeReport()
    End Sub
End Class

修改后你在类C中执行Dim objFkkiNinteiJokyoRpt As New A(objCsv)就不会再出现类型不匹配的报错。

内容的提问来源于stack exchange,提问作者Suneo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:54:07