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

VB.NET类构造函数中MyBase.New()的作用是什么

关于VB.NET构造函数中MyBase.New()语句的作用说明

首先纠正一个常见误解:

  • 整个.NET体系里不存在无基类的普通类,所有没显式用Inherits关键字指定父类的VB.NET自定义类,都会默认隐式继承自System.Object类型,你写的simpleList(Of itemType)泛型类也不例外,它的直接基类就是Object。

针对你标注的Statement 2即MyBase.New()的实际作用:

  • 这行代码的作用是显式调用当前类直接基类(也就是Object)的无参构造函数,完成对象实例里基类部分的初始化流程。
  • 按照VB.NET的构造函数执行规则,所有派生类的构造函数在执行自身逻辑之前,都会默认隐式调用基类的无参构造函数。你在这里明写这行,本质是把编译器本来就会自动补上的逻辑写在了明面上——就算你直接删掉这行,编译器编译的时候也会自动在构造函数最开头插入一模一样的基类无参构造调用,所以你跑代码的时候感知不到它的存在、觉得它没实际作用,这个感受和实际运行效果完全一致。
  • Object的无参构造函数本身没有任何自定义业务逻辑,只做运行时要求的最基础对象初始化,所以这行代码完全不会影响后面items数组的初始化逻辑:你传参t=2时创建的数组长度为3,是VB.NET数组的固有语法规则——数组声明时括号里的数值是数组的最大下标值,不是数组长度,数组下标从0开始计数,所以最大下标2对应0、1、2三个元素,这个逻辑和MyBase.New()没有任何关系。

补充说明:

如果你的类显式继承了某个自定义基类,而基类没有提供无参构造函数,只有带参数的构造函数,那就必须在派生类构造函数里显式通过MyBase.New(参数列表)调用基类对应的带参构造,不然代码直接编译报错。你现在看到的示例只是因为基类是默认的Object,无参构造默认存在且没有额外逻辑,才会显得这行代码好像多余。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:48:21