日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

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

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

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

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

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

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

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

本類教程下載

系統下載排行

主站蜘蛛池模板: 亚洲高清一区二区三区久久 | 操碰免费视频 | 99精品久久久久久 | 性做久久久久久久免费观看 | 欧美一区二区三区不卡片 | 亚洲 欧美 日韩 精品 | 国产最爽的乱淫视频国语对 | 午夜在线影院 | 亚洲精品成人久久久影院 | 亚洲a影院 | 美女网战色 | 欧美在线观看一区二区三 | 国产亚洲精品久久久久久牛牛 | 日韩成人性视频 | 狠狠操免费视频 | 国产美女91呻吟求 | 91精品国产91久久久久久最新 | 亚洲激情成人 | 精品一区二区视频 | 欧美专区在线观看 | 久久成人综合网 | 在线看黄色网址 | 日韩美女一区 | 日日摸狠狠的摸夜夜摸 | 福利盒子手机看片 | 成人精品一区久久久久 | 亚洲成人毛片 | 久久精品视频1 | 午夜看黄| 国产高清资源网站在线观看 | 成人看片黄a免费看视频 | 亚洲视频免 | 色婷婷视频在线观看 | 免费看日日麻批免费视频播放 | 做爰成人五级在线视频 | 免费aⅴ网站 | 一二三区在线视频 | 男女男在线观看视频网站 | 精品91精品91精品国产片 | 天天干天天操天天爽 | 99久久精品国产免看国产一区 |