結(jié)構(gòu)體無法初始化值,你可以用類實現(xiàn),或者寫一個構(gòu)造函數(shù),把值傳進去。
成都創(chuàng)新互聯(lián)公司-云計算及IDC服務(wù)提供商,涵蓋公有云、IDC機房租用、達州服務(wù)器托管、等保安全、私有云建設(shè)等企業(yè)級互聯(lián)網(wǎng)基礎(chǔ)服務(wù),電話聯(lián)系:18982081108
Public Structure wheelmodel
Public ID As Short
Public swapway() As Short
Public start As Short
Public Sub New(ByVal Size As UShort) 'Size就是傳入的數(shù)組的大小
swapway = New Short(Size) {}
End Sub
End Structure
調(diào)用的時候:
Dim x As wheelmodel = New wheelmodel(10)
首先你是怎么重寫結(jié)構(gòu)的Sub New的呢?不會有這個錯誤嗎:“結(jié)構(gòu)無法聲明沒有參數(shù)的非共享“Sub New”?
結(jié)構(gòu)是值類型,和類不一樣,不一定要有構(gòu)造函數(shù)。直接
Dim?B(2)?As?A
如果有一個含參數(shù)的Sub New(i As Integer)
Dim?B()?As?A={New?A(1),?New?A(2)}
有時要初始化很多個的時候可以用循環(huán)
Dim?c?As?Integer?=?50
Dim?B(c)?As?A
For?i?=?0?To?c
B(i)?=?New?A(i)
Next
不過這樣是對變量重新賦值,這種方法用在類上比較好。
看看這個有幫助哦:
當然可以的,需要System.Runtime.InteropServices?命名空間中的?Marshal?類
Imports?System.Runtime.InteropServices?'這里一定要有?
Public?Class?Form1
Public?Structure?m_Point
Dim?x?As?Integer
Dim?y?As?Integer
End?Structure
Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click
Dim?i?As?Integer?=?50
Dim?ai()?As?Integer?=?{1,?2,?3,?4,?5}
Dim?pi?As?IntPtr?=?GCHandle.Alloc(i,?GCHandleType.Pinned).AddrOfPinnedObject()?'取得整形變量的指針?
Dim?pai?As?IntPtr?=?GCHandle.Alloc(ai,?GCHandleType.Pinned).AddrOfPinnedObject()?'取得整形數(shù)組首地址指針
MsgBox(Marshal.ReadInt32(pi,?0))?'讀回整形變量指針指向的值
MsgBox(Marshal.ReadInt32(pai,?0?*?4))?'讀回數(shù)組的第一個元素
MsgBox(Marshal.ReadInt32(pai,?1?*?4))?'讀回數(shù)組的第二個元素
MsgBox(Marshal.ReadInt32(pai,?2?*?4))?'讀回數(shù)組的第三個元素
'-----下面是結(jié)構(gòu)--------------------------
Dim?m_p?As?New?m_Point
m_p.x?=?100
m_p.y?=?50
Dim?pm_p?As?IntPtr?=?GCHandle.Alloc(m_p,?GCHandleType.Pinned).AddrOfPinnedObject()?'取得結(jié)構(gòu)首地址指針?
MsgBox(Marshal.ReadInt32(pm_p,?0?*?4))?'讀回結(jié)構(gòu)的第一個值
MsgBox(Marshal.ReadInt32(pm_p,?1?*?4))?'讀回結(jié)構(gòu)的第二個值
End?Sub
End?Class
struct T_ChildStruct
{
int nChildData;
string strChildData;
T_ChildStruct()
{
nChildData = 0;
strChildData = ""; // string可以不用寫初始化,本身構(gòu)造中就有
}
};
struct T_FatherStruct
{
int nFatherData;
string strFatherData;
T_ChildStruct arrChild[10];
T_FatherStruct()
{
nFatherData = 0;
strFatherData = "";
}
};