- 題名: 要素が構造体配列である構造体のサイズ取得について
- 日時: 2006/07/21 10:07:54
- ID: 16758
- この記事の返信元:
- (なし)
- この記事への返信:
- [16760] Re[1]: 要素が構造体配列である構造体のサイズ取得について2006/07/21 11:21:14
- [16761] Re[1]: 要素が構造体配列である構造体のサイズ取得について2006/07/21 11:45:09
- ツリーを表示
Imports System, System.Runtime.InteropServices Module Module1 <StructLayout(LayoutKind.Sequential, Pack:=1)> _ Public Structure STR1 Dim i1 As Integer Dim i2 As Integer End Structure <StructLayout(LayoutKind.Sequential, Pack:=1)> _ Public Structure STR2 <MarshalAs(UnmanagedType.ByValArray, SizeConst:=10)> _ Dim sr1() As STR1 Public Sub Initialize() ReDim sr1(9) End Sub End Structure Public sr2 As STR2 Sub Main() sr2.Initialize() 'Size=80 Console.WriteLine("Size={0}", Marshal.SizeOf(sr2)) Console.WriteLine("Enter を押してください:") Console.ReadLine() End Sub End Module
ありがとうございました。サイズ取得できました。 下のようなプリミティブ型の配列の時は Len(sr2)のようにしてサイズを取得できたので、構造体配列の場合でも、Len関数でサイズが取れると考えてました。 このあたりの違いは調べていこうと思います。 Public Structure STR3 <VBFixedArray(9)> Dim s1() As Short <VBFixedArray(9)> Dim i1() As Integer Public Sub Initialize() ReDim s1(9) ReDim i1(9) End Sub End Structure Public sr3 As STR3 ここでLen(sr3)とすると 60 がとれる。 あと、お聞きしてばかりですみませんが、もう1点構造体のサイズについて質問させてください。 以下のような構造体のサイズ取得はどのようにして記述すればよいのでしょうか。 (構造体配列と文字列の配列を要素に持っているような構造体) Public Structure STR2 <VBFixedArray(9)> Dim sr1() As STR1 '構造体の配列 <VBFixedArray(9), VBFixedString(5)> Dim s() As String '文字列の配列 Public Sub Initialize() ReDim sr1(9) Redim s(9) End Sub End Structure ■No16761に返信(魔界の仮面弁士さんの記事) > Imports System, System.Runtime.InteropServices > Module Module1 > <StructLayout(LayoutKind.Sequential, Pack:=1)> _ > Public Structure STR1 > Dim i1 As Integer > Dim i2 As Integer > End Structure : : > Console.WriteLine("Size={0}", Marshal.SizeOf(sr2)) > > Console.WriteLine("Enter を押してください:") > Console.ReadLine() > End Sub > End Module
分類:[.NET]