明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線(xiàn)學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

VB.NET特征

[摘要]VB.NET特性 -----StructLayout特性 StructLayout特性允許我們控制Structure語(yǔ)句塊的元素在內(nèi)存中的排列方式,以及當(dāng)這些元素被傳遞給外部DLL時(shí),運(yùn)行庫(kù)排列這些元素的方式。Vis...
VB.NET特性

-----StructLayout特性





StructLayout特性允許我們控制Structure語(yǔ)句塊的元素在內(nèi)存中的排列方式,以及當(dāng)這些元素被傳遞給外部DLL時(shí),運(yùn)行庫(kù)排列這些元素的方式。Visual Basic結(jié)構(gòu)的成員在內(nèi)存中的順序是按照它們出現(xiàn)在源代碼中的順序排列的,盡管編譯器可以自由的插入填充字節(jié)來(lái)安排這些成員,以便使得16位數(shù)值用子邊界對(duì)齊,32位數(shù)值用雙字邊界對(duì)齊。

使用這種排列(未壓縮布局)提供的性能最佳。



在Visual Basic 6的用戶(hù)自定義結(jié)構(gòu)是未壓縮的,而且我們不可以改變這一默認(rèn)設(shè)置。在VB.NET中可以改變這種設(shè)置,并且可以通過(guò)System.Runtime.InteropServices.StructLayout 特性精確的控制每一個(gè)結(jié)構(gòu)成員的位置。System.Runtime.InteropServices.StructLayout 允許的值有StructLayout.Auto StructLayout.Sequential StructLayout.Explicit.



Imports System.Runtime.InteropServices



<StructLayout(LayoutKind.Explicit)> _

Structure test

...

End Structure

StructLayout特性支持三種附加字段:CharSet、Pack、Size。



· CharSet定義在結(jié)構(gòu)中的字符串成員在結(jié)構(gòu)被傳給DLL時(shí)的排列方式。可以是Unicode、Ansi或Auto。

默認(rèn)為Auto,在WIN NT/2000/XP中表示字符串按照Unicode字符串進(jìn)行排列,在WIN 95/98/Me中則表示按照ANSI字符串進(jìn)行排列。



· Pack定義了結(jié)構(gòu)的封裝大小?梢允1、2、4、8、16、32、64、128或特殊值0。特殊值0表示當(dāng)前操作平臺(tái)默認(rèn)的壓縮大小。







Imports System.Runtime.InteropServices



<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode, Pack:=4)> _

Structure test

...

End Stru


標(biāo)簽:VB.NET特征