• <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无码一区二区三区| 久久亚洲最大成人网4438| 免费黄网站在线看| 亚洲精品123区在线观看| 亚洲国产精品人人做人人爱| 人妻无码一区二区三区免费| 蜜桃传媒一区二区亚洲AV| 亚洲国产精品国自产拍AV| 夜夜爽免费888视频| 99精品免费视品| 亚洲日本成本人观看| 亚洲一区二区三区香蕉| 扒开双腿猛进入爽爽免费视频| 一个人看的免费视频www在线高清动漫| 久久精品国产亚洲AV无码麻豆 | 嫖丰满老熟妇AAAA片免费看| 日韩精品无码永久免费网站| 亚洲成aⅴ人片在线影院八| 亚洲午夜av影院| 四虎成人精品一区二区免费网站| a在线免费观看视频| 久久久久久亚洲精品无码| 亚洲宅男永久在线| 国产性爱在线观看亚洲黄色一级片| 一个人在线观看视频免费| 国产午夜成人免费看片无遮挡 | 亚洲国产第一页www| 亚洲综合久久夜AV | 国产成人免费片在线观看 | 成人免费视频国产| 免费观看国产网址你懂的| 青青青国产手机频在线免费观看 | 无码国产精品一区二区免费式影视 | 国产亚洲欧洲精品| 亚洲av麻豆aⅴ无码电影| 麻豆国产精品免费视频| 精品一区二区三区免费| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 国产情侣久久久久aⅴ免费| 精品女同一区二区三区免费播放 | 亚洲人成电影网站色|