猿问
下载APP

VB.NET 里 结构(Structure)和类(Class)有什么区别?

VB.NET 里 结构(Structure)和类(Class)有什么区别?


潇湘沐
浏览 112回答 3
3回答

MYYA

Structure是值类型,classe是引用类型 Structure用栈来分配; classe用堆来分配 structure的成员默认情况下是公共的,而Class的成员变量和常量默认情况下是私有的而其它成员默认情况下是公共的.这与VB6是相兼容的。 structure必须至少有一个非共享的成员变量或事件成员,class可以完全是空的. Structure的成员不能声明成Protected; class成员可以. 一个structure过程只能在它是一个Shared Sub时才能handle events而且只能通过AddHandler语句;而任何class过程都可以handle events,既可以用Handles关键字或 AddHandler语句。 Structure variable declarations cannot specify initializers, the New keyword, or initial sizes for arrays; class variable declarations can. Structure继承自ValueType类,不能从其它任何类型继承; classes可以从任何不是ValueType的类继承 Structure不能继承而Class可以 Structure从来不析构terminated因此common language runtime (CLR)从来不调用它的Finalize方法,classe由垃圾回收器进行析构, 当没有任何对该类的引用时调用它的Finalize方法 structure 不需要一个构造函数,而Class需要 Structure只能有带参数的非共享的构造函数; classes 可以有带或不带参数的构造函数. 每个Structure都有一个默认的不带参数的构造函数以对其成员进行初始化,你可以重新定义该函数

慕慕森

它们都可以相当于描述一个实体!struct 类型是一种值类型,通常用来封装小型相关变量组,例如,矩形的坐标或库存商品的特征。下面的示例显示了一个简单的结构声明。结构可以实现接口,但它们无法继承另一个结构。因此,结构成员无法声明为 protected。class 类只能从一个基类继承实现。但是,一个类可以实现一个以上的接口。

暮色呼如

struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体。struct没有继承,没有封装,要说封装只有初步封装。而class把数据,接口可以以三种类型封装,private,public,protected;还可以继承和派生。它们都可以提供自己的接口函数,构造函数。一个类可以由结构继承而来。struct只能叫做数据的集合,外部可以任意访问,但是类就完成了封装,维护了数据安全,这就是面向对象的理念。class里可以定义私有成员和保护成员而结构体里所有的成员,均为公用成员struct想用{}来赋初值,它也必须满足很多的约束条件,这些条件实际上就是让struct更体现出一种数据机构而不是类的特性。那为什么在上面仅仅将struct改成class,{}就不能用了呢?其实问题恰巧是之前所讲的——访问控制!如果将struct改成class的时候,访问控制由public变为private了,那当然就不能用{}来赋初值了。加上一个public,class也是能用{}的,和struct毫无区别。从上面的区别,可以看出,struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体。
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答