国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

vb.net中類的使用方法

2024-07-10 13:00:32
字體:
來源:轉載
供稿:網友
 

對于復雜的操作設計解決方案,必須首先確定組成這個系統的對象,在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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 壤塘县| 临沂市| 正蓝旗| 潞城市| 通江县| 南昌市| 营口市| 监利县| 应城市| 廊坊市| 紫云| 亚东县| 余姚市| 饶阳县| 册亨县| 泗水县| 孝义市| 汉阴县| 舒城县| 临安市| 车致| 东兰县| 时尚| 治多县| 承德市| 德惠市| 长岛县| 利津县| 崇州市| 博湖县| 林西县| 峨山| 庆云县| 偏关县| 松潘县| 靖边县| 会理县| 广宁县| 安西县| 阜新| 博罗县|