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

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

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

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

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

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

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

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

本類教程下載

系統下載排行

主站蜘蛛池模板: 亚洲国产欧美国产第一区二区三区 | 午夜网站在线观看免费网址免费 | 91性视频| 国产亚洲欧美日韩俺去了 | 天天狠狠色综合图片区 | 小明日韩在线看看永久区域 | 国产亚洲精品美女2020久久 | 久久夜色精品国产 | 国产精品爱久久 | 欧美插插综合 | 手机看片福利盒子久久 | 日韩在线无 | 99免费精品 | 国产精品1000部在线观看 | 日韩欧美一级毛片精品6 | 韩国午夜理伦三级2020宅男 | 久久亚洲视频 | 国产成人在线视频免费观看 | 国产高清视频 | 亚洲一区二区三区高清 | 欧美成人h精品网站 | 日本黄色小说网 | 新版天堂中文资源官网 | 日本爱爱视频 | 成人久久伊人精品伊人 | 日韩在线中文字幕 | 免费观看国产精品 | 久久精品视频一区二区三区 | 中文字幕日韩欧美 | 日韩精品一区二区三区国语自制 | 国产精品毛片大码女人 | 欧美一区二区三区性 | ak福利影院| 国产欧美乱码在线看 | 日韩欧美在线观看一区 | 人人揉揉香蕉大免费不卡 | 91久久偷偷看嫩草影院无费 | 国内精品伊人久久久久妇 | 岛国三级视频 | 国产在线高清视频 | 亚洲一区色|