• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        結構 Structure

        結構 Structure

        更新時間:2022-05-16 文章作者:未知 信息來源:網絡 閱讀次數:

        如果對類比較熟悉,先看看結構和類的異同點:

        結構和類
        Visual Basic .NET 統一了結構和類的語法,結果就是兩個實體都支持大多數的相同功能。但是,在結構和類之間還有著重要的區別。

        相同點
        結構和類在以下方面相同:

        兩者都屬于“容器”類型,表示它們可以包含其他類型作為成員。
        兩者都具有成員,成員可以包括構造函數、方法、屬性、字段、常數、枚舉、事件和事件處理程序。
        兩者的成員都具有單獨的可訪問性。例如,一個成員可以聲明為 Public,而另一個可以聲明為 Private。
        都可實現接口。
        都有共享的構造函數,有或沒有參數。
        兩者都可以公開默認屬性,只要該屬性至少帶有一個參數。
        兩者都可以聲明和引發事件,而且兩者都可以聲明委托。
        不同點
        結構和類在以下方面有所不同:

        結構是值類型,而類是引用類型。
        結構使用堆棧分配,類使用堆分配。
        所有的結構成員都默認為 Public;類變量和常量默認為 Private,而其他的類成員默認為 Public。類成員的這一行為提供與 Visual Basic 6.0 默認值系統的兼容。
        結構必須至少具有一個非共享變量或事件成員;而類可以完全是空的。
        結構成員不能聲明為 Protected,類成員可以。
        只有 Shared Sub 結構過程才能處理事件,并且只能使用 AddHandler 語句;而任何類過程都可以處理事件,并且可以使用 Handles 關鍵字或 AddHandler 語句。
        結構變量聲明不能指定初始值、New 關鍵字或數組初始大小,類變量聲明可以。
        結構從 ValueType 類隱式繼承,不能從其他類型繼承,類可以從除 ValueType 之外的其他任何類繼承。
        結構是不可繼承的;而類可以繼承。
        結構從不終止,所以公共語言運行庫 (CLR) 從不在任何結構上調用 Finalize 方法,類可由垃圾回收器終止,當檢測到沒有剩下的活動引用時,垃圾回收器將在類上調用 Finalize。
        結構不需要構造函數;而類需要。
        結構僅當沒有參數時可以有非共享的構造函數;類無論有沒有參數都可以。
        每一個結構都有不帶參數的隱式公共構造函數。此構造函數將結構的所有數據成員初始化為默認值。不能重定義此行為。

        實例和變量
        由于結構是值類型,每個結構變量都永久地綁定到一個單獨的結構實例。但類是引用類型,對象變量可引用各種類實例。此區別在下列方面影響結構和類的使用:

        結構變量使用結構的無參數構造函數隱式包含成員初始化。因此,Dim S As Struct1 等效于 Dim S As Struct1 = New Struct1()。
        當將一個結構變量賦給另一個,或傳遞一個結構實例到過程參數,所有變量成員的當前值都被復制到新結構中。當將一個對象變量賦給另一個,或傳遞一個對象變量到過程,僅有引用指針被復制。
        可以將值 Nothing 賦給結構變量,但實例繼續保持與變量的關聯。盡管賦值重新初始化了變量成員,仍可以調用其方法并訪問其數據成員。相比之下,如果將對象變量設為 Nothing,將其與任何類實例斷開關聯,在給它賦予另一個實例前,不能通過變量訪問其他成員。
        對象變量可以有在不同時間賦給它的不同的類實例,幾個對象變量可以同時引用同一個類實例。當通過指向同一實例的另一個變量訪問時,更改的類成員的值會影響這些成員。但是,結構成員獨立存在于其自身實例中。更改其值不會在其他任何結構變量中反映出來,即使是在同一 Structure 聲明的其他實例中。
        兩個結構的等效性測試必須在成員對成員的測試中進行。兩個對象變量可使用 Equals 方法進行比較。Equals 指示兩個變量是否指向同一實例。
        Structure 語句
        Structure 語句只能在模塊、命名空間或文件級出現。這就是說可以在源文件或模塊、接口或類內部聲明結構,但不能在過程內部進行聲明。也可以在一個結構中定義另一個結構,但不能通過外部結構訪問內部結構的成員。而是必須聲明一個內部結構的數據類型變量。

        可以從聲明結構的模塊或類內的任何位置訪問它們。默認情況下,結構為 Friend。若要更詳細地指定可訪問性,請在 Structure 語句中包括 Public、Friend、Protected Friend 或 Private。

        必須聲明結構的每一數據成員。這意味著 variabledeclarations 部分中的每一語句必須使用 Dim、Friend、Private 或 Public。由于無法從結構中繼承,因此結構成員不能是 Protected 或 Protected Friend。但結構本身可以是 Protected 或 Protected Friend。

        如果 Option Strict 是 On,則在每一個成員聲明中還必須包含 As 子句。用 Dim 聲明的成員默認為 Public 訪問,未用 As 子句聲明的成員默認為 Object 數據類型。

        在結構中必須至少定義一個非共享變量或事件。在結構中不能只包含常數、屬性和過程,即使某些成員是非共享的。

        結構成員的范圍是整個結構。

        不能將結構的任何數據成員的值初始化成其聲明的一部分。必須通過結構上參數化的構造函數初始化數據成員,或者在創建了該結構的實例后將值賦給該成員。

        結構支持的許多功能與類支持的一樣。例如,結構可以擁有屬性和方法,可以實現接口,也可以擁有參數化的構造函數。但是,在某些地方(例如繼承、聲明和用法)結構和類之間存在著重大的差異。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 中文字幕乱码系列免费| 亚洲精品夜夜夜妓女网| 亚洲一级毛片免费看| 永久免费观看黄网站| 亚洲精品福利你懂| 亚洲国产精品久久久久婷婷老年| mm1313亚洲精品国产| 日本免费人成黄页在线观看视频 | 动漫黄网站免费永久在线观看| 中文字幕在线成人免费看| 真人无码作爱免费视频| 亚洲日韩精品无码专区加勒比| 亚洲丝袜美腿视频| 亚洲av永久无码精品网站| 国产亚洲情侣一区二区无| 丁香亚洲综合五月天婷婷| 午夜毛片不卡免费观看视频| 91免费播放人人爽人人快乐| 日本免费大黄在线观看| 无码国产精品一区二区免费vr | 国产精品免费一级在线观看| 一二三四免费观看在线电影| 最近中文字幕无免费| 永久黄色免费网站| 最近高清中文字幕免费| 97av免费视频| 欧洲一级毛片免费| 黄页网站免费在线观看| 国产免费不卡视频| 一个人免费观看www视频在线| 亚洲免费网站观看视频| 成人av免费电影| 精品国产免费一区二区| 日本19禁啪啪无遮挡免费动图| 色播在线永久免费视频| 国产精品免费看久久久无码| 人人狠狠综合久久亚洲高清| 亚洲精品国产精品国自产观看| 国产成人精品久久亚洲| 久久综合九九亚洲一区| 亚洲视频在线观看地址|