分享
 
 
 

vb.net中类的使用方法

王朝vb·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

对于复杂的操作设计解决方案,必须首先确定组成这个系统的对象,在vb中,我们常常把每个对象的属性和操作组合到一个类里面,类的定义如下:

Class ClassName

'属性和操作

End Class

一个完整的例子:

Class Classname

dim a as string

dim b as integer

dim c as string

sub op()

end sub

sub cl()

endsub

endclass

类的定义本身不产生变量,定义之后可以使用new操作符来产生变量

dim variable as classname

变量定义后可以使用点运算符来引用

variable.a = 'test'

创建类的时候,应当把类设计成一个“黑匣子”,就像电视机一样我们不需要了解电视机的组成和原理,直接用就可以了,可以隐藏类的私有类成员和方法,

用来控制类成员访问的修饰符

Friend : 只在当前项目中可用

private : 只在本类中可用

protected : 在本类和本类的派生类中可用的成员

protected friend:在当前项目和本类的派生类中可用

public :类以外的代码也可以访问

默认值为:public

类成员的初始化:

创建类的对象的时候,通常立即赋值,为了简化赋值的操作,可以放入专门的子例程,即构造器,在任何类定义中,它都叫做new,例如:

class book

public title as string

public publisher as string

sub new()

me.title=title

me.publisher=publisher

end sub

end class

如果要简化对象成员的引用可以使用with运算符

在创建类的时候,可能经常需要对类的变量赋值进行限制,例如,年龄,为了实现对类变量赋值的限制,可以在变量定义的时候使用private,例如

Module Module1

Class book

Public title As String

Public author As String

Private price As Double

Public Property bookprice() As Double

Get

Return price

End Get

Set(ByVal Value As Double)

If (Value >= 0) And (Value <= 100) Then

price = Value

Else

MsgBox("error")

price = 0

End If

End Set

End Property

Public Sub New(ByVal title As String, ByVal author As String)

Me.title = title

Me.author = author

End Sub

End Class

Sub Main()

Dim p As New book("os ap", "hans")

p.bookprice = 490

Console.ReadLine()

End Sub

与构造器对应的方法是析构器,方法是finalize子例程

一下是msdn中对此的详细解释:

每当创建类的实例时,如果该对象中存在名为 New 的过程,则公共语言运行库 (CLR) 尝试执行它。New 是一种称为“构造函数”的过程,该构造函数用于在对象中的任何其他代码执行之前初始化新对象。New 构造函数可用于打开文件、连接到数据库、初始化变量以及处理任何需要在可使用对象前完成的其他任务。

当创建派生类的实例时,基类的 Sub New 构造函数首先执行,然后执行派生类中的构造函数。这是因为 Sub New 构造函数中的第一行代码使用语法 MyBase.New() 调用类层次结构中该类本身紧上面的类的构造函数。然后调用该类层次结构中每个类的 Sub New 构造函数,直到到达基类的构造函数。此时,基类构造函数中的代码执行,接着执行所有派生类中每个构造函数的代码,最后执行最相近派生的类中的代码。

当不再需要某对象时,CLR 调用该对象的 Finalize 方法,然后释放其内存。Finalize 方法称为“析构函数”,因为它执行清理任务,如保存状态信息、关闭文件和与数据库的连接,以及执行在释放对象前必须完成的其他任务。

当调用派生类的 Sub Finalize 方法时,首先执行所需的任何清理任务,然后使用语法 MyBase.Finalize() 显式调用其基类的 Sub Finalize 方法。因此,Sub Finalize 方法首先从最相近派生的类开始运行,最后执行基类中的代码。

一旦涉及到finalize方法,垃圾收集器就不能不提到,在.net环境中,由垃圾收集器来管理内存,在vb.net中,告诉垃圾收集器你的程序不在需要使用某个对象的方法是把对象设置为nothing,如下:

一旦涉及到finalize方法,垃圾收集器就不能不提到,在.net环境中,由垃圾收集器来管理内存,在vb.net中,告诉垃圾收集器你的程序不在需要使用某个对象的方法是把对象设置为nothing,如下:employee=nothing

在垃圾收集器释放某个对象之前,首先调用该对象的finalize方法,根据处理的不同,有时从程序中止使用某个对象到某个对象的finalize方法运行之间时间很长,在这种情况下可以在类里放一个dispose的专门方法,用这个方法执行对废弃对象的处理,当某个对象的内容不需要使用时,调用dispose方法,程序立即执行对象的清理处理,仔细观察vs生成的窗口代码,也会发现dispose方法的代码,如下:

Public Sub New()

MyBase.New()

'该调用是 Windows 窗体设计器所必需的。

InitializeComponent()

'在 InitializeComponent() 调用之后添加任何初始化

End Sub

'窗体重写 dispose 以清理组件列表。

Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

If disposing Then

If Not (components Is Nothing) Then

components.Dispose()

End If

End If

MyBase.Dispose(disposing)

End Sub

我们只需要把dispose进行调用就可以了:someclass.dispose

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有