vb.net中类的使用方法

 
对于复杂的操作设计解决方案,必须首先确定组成这个系统的对象,在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

时间: 2024-11-03 16:23:57

vb.net中类的使用方法的相关文章

java方法-java中类的某个方法是不是只能由这个类及其子类的对象才可以调用

问题描述 java中类的某个方法是不是只能由这个类及其子类的对象才可以调用 java中类的某个方法是不是只能由这个类及其子类的对象才可以调用 解决方案 当然不是,只有private/protected的方法才是只有自己和子类才能调用. 解决方案二: 看这个方法的修饰符了

python中类的一些方法分析_python

本文实例分析了python中类的一些方法,分享给大家供大家参考.具体分析如下: 先来看看下面这段代码: class Super: def delegate(self): self.action() class Provider(Super): def action(self): print 'in Provider.action' x = Provider() x.delegate() 本文实例运行环境为Python2.7.6 运行结果如下: in Provider.action  在Super

vb.net 数组元素查询方法代码

vb.net 数组元素查询方法代码 Imports System Public Class Example     Public Shared Sub Main()         Dim letters() As String = { "E", "B",   "A", "Z", "D", "X",  "Y","Q" }         Conso

请教高手:把VB函数改写成C#方法,提供代码注释,供学习参考。

问题描述 请教高手:把VB函数改写成C#方法,提供代码注释,供学习参考.例如:FunctionRemoveDupChar(theStringAsString)AsStringDimiAsIntegerFori=1ToLen(theString)IfInStr(RemoveDupChar,Mid(theString,i,1))=0And_Mid(theString,i,1)<>""Then_RemoveDupChar=RemoveDupChar&Mid(theStri

源代码-vb的项目文件的保存方法

问题描述 vb的项目文件的保存方法 一个sql+vb的系统,做完的时候,按了一下生成,然后再发给了老师,但老师说,打不开看VB的源代码,后来又改了一下内容,现在要发给老师,但又怕出现以前的那种情况,该怎么办?菜鸟求救!!急急急!!! 解决方案 如果是安装程序,注意一下数据库使用相对路径,如果用到了控件,则要把控件的dll和ocx都打包.不过一般你老是肯定也装了环境,所以关键是数据库路径 解决方案二: 按保存按钮,会弹出一个对话框问你保存在哪里.一般至少两次,一次是你的源代码,一次是项目文件

在c#中什么可以代替vb中的move的方法

问题描述 在c#中什么可以代替vb中的move的方法 在c#中什么可以代替vb中的move的方法,网上找了半天都没有找到啊,求助各位大神...

vb.net有无loading这个方法?

问题描述 当打开游戏时,通常会看到loading.......这个加载数据方法,目的是加载完全部数据才进入游戏,不知道vb.net有无这个方法? 解决方案 解决方案二:这个怎么可能会有现成的解决方案三:游戏的loading跟编程的load不太一样.VB.NET是Load,显示窗口前先加载该事件内容.解决方案四:难道要用多线程,实现?解决方案五:同意#2楼的意见.游戏加载资源时,是会显示一个进度条(包括圆形的进度条).关键是,每一个游戏开发者,都自己设计这个控件.而你动不动就问"有没有这个方法?&

VB实现禁用任务管理器的方法_vb

在Windows XP下禁用Ctrl-Alt-Delete的方法比较简单,因为Ctrl-Alt-Delete组合键的功能就是调用任务管理器,直接把任务管理器给禁用了,Ctrl-Alt-Delete的功能也就没有了,相当于也给禁用了.这个方法的简单的实现是用二进制 stream 形式先打开 C:\windows\system32\taskmgr.exe任务管理器程序,使后续无法手工正常打开任务管理器.代码如下: 复制代码 代码如下: Open "C:\WINDOWS\system32\taskmg

vb.net中使用sendkeys方法与shell函数

vb.net中使用sendkeys遥控:大家在vb6中都用过sendkeys,幕通过发送键盘的事件间接地控制外部程序,是有遥控之说.我在vb7中却发现这个不能用了, 也就不了了之,后来一次在查阅msdn的时候竟看到了这个,是以尝试了一下,竟然旧貌新颜,还是一样好用.主要是在system.winforms族中找到sendkeys 使用方法同vb6键:一般的字符键如下输入"a" "b" "c"------"z"等,如果要连续按下两