vb2005 怎麽求結構体類型所占的字節數,该怎么处理
vb2005 怎麽求結構体類型所占的字節數
vb2005 怎麽求結構体類型所占的字節數
------解决方案--------------------
System.Runtime.InteropServices.Marshal.SizeOf(object)
------解决方案--------------------
SizeOf
------解决方案--------------------
System.Runtime.InteropServices.Marshal.SizeOf(object)
------解决方案--------------------
楼上的,不能那样用,那样用很好玩的
Public Structure cinfo
Public name As String
Public age As String
Public num As Int16
End Structure
只保留num 返回2 只保留name 返回4 name+num 返回8 name+num+age 返回12 hoho,不明白
这样写:
Public Class Form1
Public Structure cinfo
Public name As String
Public age As String
Public ReadOnly Property Length(Optional ByVal ChCharAsTwo As Boolean = False) As Integer
Get
If ChCharAsTwo Then
Dim tempa, tempb As Integer
If name = Nothing Then
tempa = 0
Else
tempa = System.Text.Encoding.Default.GetBytes(Me.name).Length
End If
If age = Nothing Then
tempb = 0
Else
tempb = System.Text.Encoding.Default.GetBytes(Me.age).Length
End If
Return tempa + tempb
Else
Return (Len(name) + Len(age))
End If
End Get
End Property
End Structure
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim hh As cinfo
hh.name = "你好haha "
hh.age = "1112 "
Debug.WriteLine(System.Runtime.InteropServices.Marshal.SizeOf(hh))
Debug.WriteLine(hh.Length)
Debug.WriteLine(hh.Length(True))
End Sub
End Class
我也没办法了,hoho,只能这样了
vb2005 怎麽求結構体類型所占的字節數
------解决方案--------------------
System.Runtime.InteropServices.Marshal.SizeOf(object)
------解决方案--------------------
SizeOf
------解决方案--------------------
System.Runtime.InteropServices.Marshal.SizeOf(object)
------解决方案--------------------
楼上的,不能那样用,那样用很好玩的
Public Structure cinfo
Public name As String
Public age As String
Public num As Int16
End Structure
只保留num 返回2 只保留name 返回4 name+num 返回8 name+num+age 返回12 hoho,不明白
这样写:
Public Class Form1
Public Structure cinfo
Public name As String
Public age As String
Public ReadOnly Property Length(Optional ByVal ChCharAsTwo As Boolean = False) As Integer
Get
If ChCharAsTwo Then
Dim tempa, tempb As Integer
If name = Nothing Then
tempa = 0
Else
tempa = System.Text.Encoding.Default.GetBytes(Me.name).Length
End If
If age = Nothing Then
tempb = 0
Else
tempb = System.Text.Encoding.Default.GetBytes(Me.age).Length
End If
Return tempa + tempb
Else
Return (Len(name) + Len(age))
End If
End Get
End Property
End Structure
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim hh As cinfo
hh.name = "你好haha "
hh.age = "1112 "
Debug.WriteLine(System.Runtime.InteropServices.Marshal.SizeOf(hh))
Debug.WriteLine(hh.Length)
Debug.WriteLine(hh.Length(True))
End Sub
End Class
我也没办法了,hoho,只能这样了