• <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 數據類型。

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

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

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

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

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

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲av无码乱码在线观看野外| 大学生一级毛片免费看| 国产精品亚洲视频| 一级毛片免费播放试看60分钟| 日本一道高清不卡免费| 在线观看亚洲免费视频| 青青青国产色视频在线观看国产亚洲欧洲国产综合| 777爽死你无码免费看一二区| 亚洲日本一区二区三区| 日本最新免费网站| 亚洲免费观看在线视频| 免费A级毛片无码免费视| 亚洲狠狠婷婷综合久久蜜芽| 国产极品粉嫩泬免费观看| 一级毛片免费在线| 亚洲AV一宅男色影视| 精品久久8x国产免费观看| 日本亚洲免费无线码| 全部免费毛片免费播放| 中文无码日韩欧免费视频| 亚洲国产一区二区三区青草影视 | 人成午夜免费大片在线观看| 久久久久亚洲AV成人网| 国产va在线观看免费| 77777午夜亚洲| 亚洲电影日韩精品| 久操免费在线观看| 亚洲国产精品成人午夜在线观看| 亚洲精品网站在线观看不卡无广告 | 爱情岛论坛免费视频| 亚洲av中文无码乱人伦在线r▽ | 一级毛片免费毛片毛片| 亚洲午夜视频在线观看| 精品剧情v国产在免费线观看| 一级午夜a毛片免费视频| 精品亚洲成a人片在线观看| 国产无遮挡吃胸膜奶免费看视频| 在线观看免费黄网站| 亚洲AV综合色区无码二区偷拍| 亚洲Av无码乱码在线znlu| 免费国产黄网站在线观看 |