码迷,mamicode.com
首页 > Web开发 > 详细

VB.NET 结构(Structure)和类(Class)的区别

时间:2015-11-07 18:52:02      阅读:1741      评论:0      收藏:0      [点我收藏+]

标签:

类是我们用来构造 VB.NET 应用程序时的最基本的编程结构了。

那结构与类有什么相似之处与不同之处呢?

结构和类,

相同之处是都含有成员,包括构造函数、方法、属性、字段、常量、枚举和事件,都可以实现接口,都有共享的构造函数,都能对成员进行封装。

没错都有构造函数,那结构的构造函数是什么,结构难道也可被实例化成对象?

看这一段代码:

Module Module1

    Private Structure test

        Dim Name As String

        Dim Age As Integer

        Public Sub New(ByVal _Name As String, ByVal _Age As Integer)

            Name = _Name

            Age = _Age

        End Sub

    End Structure

    Sub Main()

        Dim intA As New test   ‘无参数的构造函数

        Dim intB As New test("小明", 17) ‘有参数的构造函数

    End Sub

End Module

怎么样,是不是很好奇,明明只定义一个带参数的构造函数,intB 的实例化我们可以明白,但是是 intA 怎么也能通过编译器检测,给实例化呢?

是不是很好奇,结构怎么也能实例化成对象,和类很象呢!

原因是,每个结构都隐式地具有 Public 无参数实例构造函数也就是 Public Sub New(),该构造函数能产生结构的默认值。所以你平时不写构造函数,也一样可以 New出一个结构来。

事实上,我们在结构类型声明中不能声明无参数的构造函数,只能声明“带参数”的构造函数。都可以用 new 来实例化。

那结构和类在内存分配上难道也是 一样的吗?当然不一样,差别可就大了。

简单来说 ,结构是值类型,而类是引用类型。因此,结构使用堆栈分配,类使用堆(托管堆)分配。

示例:

 

VB.NET 结构(Structure)和类(Class)的区别

标签:

原文地址:http://www.cnblogs.com/lfls128/p/4945783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!