VB.NET ,結(jié)構(gòu)體要寫在所有函數(shù)的外部
成都創(chuàng)新互聯(lián)致力于做網(wǎng)站、成都網(wǎng)站建設(shè),成都網(wǎng)站設(shè)計,集團(tuán)網(wǎng)站建設(shè)等服務(wù)標(biāo)準(zhǔn)化,推過標(biāo)準(zhǔn)化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進(jìn)行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場競爭中脫穎而出。 選擇成都創(chuàng)新互聯(lián),就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!
Public Class Form1
Structure Hate
Dim str As String
Dim i As Integer
End Structure
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim a As Hate
a.str = "string"
a.i = 1
MsgBox(a.str a.i)
End Sub
End Class
一個簡單的例子:
Dim a(3) As Integer = { 0, 1, 2 }**修改**既然有界數(shù)組不能初始化,就還缺(?。┙鐢?shù)組試試嘛:
Dim a() As Integer = { 0, 1, 2 }
類型不匹配的錯誤估計是你的結(jié)構(gòu)體缺少構(gòu)造函數(shù)造成的。在你的quality_i結(jié)構(gòu)體定義里面加一個構(gòu)造函數(shù),如下所示
Public Structure quality_i
Public nub As Integer
Public nae As String
Public Sub New(ub As Integer, ae As String)nub = ubnae = aeEnd SubEnd Structure然后以如下方式初始化:
因為數(shù)組是引用類型,所以直接賦值會出現(xiàn)這種情況
可以在kb=k后單獨(dú)復(fù)制數(shù)組
kb.rr=k.rr.Clone
這樣兩個數(shù)組就是獨(dú)立的了
之所以先kb=k是為了當(dāng)其含有多個成員時值型成員可以直接復(fù)制,只需Clone引用類型的就行了
結(jié)構(gòu)體無法初始化值,你可以用類實現(xiàn),或者寫一個構(gòu)造函數(shù),把值傳進(jìn)去。
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)”是 Visual Basic 早期版本支持的用戶定義類型 (UDT) 的一般化。除字段外,結(jié)構(gòu)還可以公開屬性、方法和事件。結(jié)構(gòu)可以實現(xiàn)一個或多個接口,而您可以分別為每個字段聲明訪問級別。
可以合并不同類型的數(shù)據(jù)項來創(chuàng)建結(jié)構(gòu)。結(jié)構(gòu)將一個或多個“元素”彼此關(guān)聯(lián)并且將它們與結(jié)構(gòu)本身關(guān)聯(lián)。聲明了結(jié)構(gòu)后,它將成為“復(fù)合數(shù)據(jù)類型”,而您可以聲明該類型的變量。
想讓單個變量持有幾個相關(guān)信息時結(jié)構(gòu)很有用。例如,您可能想將一個雇員的姓名、電話分機(jī)號和薪金放在一起。可以對這些信息使用幾個變量,或者可以定義一個結(jié)構(gòu)并將它用于單個雇員變量。當(dāng)有許多雇員并且因此有該變量的許多實例時,結(jié)構(gòu)的優(yōu)點(diǎn)變得非常明顯。
使用 Structure 語句語句作為結(jié)構(gòu)聲明的開始,并使用 EndStructure 語句作為結(jié)構(gòu)聲明的結(jié)束。在這兩條語句之間必須至少聲明一個“元素”。元素可以是任何數(shù)據(jù)類型,但是至少一個必須是非共享變量,或是非共享非自定義事件。
不能在結(jié)構(gòu)聲明中初始化任何結(jié)構(gòu)元素。如果將一個變量聲明為結(jié)構(gòu)類型,則可以通過變量訪問元素來給它們賦值。
聲明一個結(jié)構(gòu):
可以使用 Public、Protected、Friend或Private關(guān)鍵字指定結(jié)構(gòu)的訪問級別,或者使用默認(rèn)值 Public。如:
Private Structure employee
End Structure
向結(jié)構(gòu)體添加元素:
結(jié)構(gòu)必須具有至少一個元素。必須聲明結(jié)構(gòu)的每個元素并指定其訪問級別。如果使用不含任何關(guān)鍵字的 Dim 語句 (Visual Basic),則可訪問性默認(rèn)值為 Public。如:
Private Structure employee
Public givenName As String
Public familyName As String
Public phoneExtension As Long
Private salary As Decimal
Public Sub giveRaise(raise As Double)
salary *= raise
End Sub
Public Event salaryReviewTime()
End Structure
---------------------------
另外,關(guān)于你的問題,請參考下面C++/C對自定義類型的比較:
1、在C++中,不需使用typedef
struct Structure1 {
char c;
int i;
float f;
double d;
};
int main() {
struct Structure1 s1, s2;
s1.c = 'a'; // Select an element using a '.'
s1.i = 1;
s1.f = 3.14;
s1.d = 0.00093;
s2.c = 'a';
s2.i = 1;
s2.f = 3.14;
s2.d = 0.00093;
}
2、在C中,需用typedef定義
typedef struct {
char c;
int i;
float f;
double d;
} Structure2;
int main() {
Structure2 s1, s2;
s1.c = 'a';
s1.i = 1;
s1.f = 3.14;
s1.d = 0.00093;
s2.c = 'a';
s2.i = 1;
s2.f = 3.14;
s2.d = 0.00093;
}
一個結(jié)構(gòu),可以理解為結(jié)構(gòu)是將幾個變量打包在一起.例如常用到的Point,Size,Location,等等,就是屬于一個結(jié)構(gòu).例如Size的結(jié)構(gòu)原型如下:Structure Size
Dim Width As Integer
Dim Hieght As Integer
End Structure舉個例子,一個游戲人物的血,藍(lán),經(jīng)驗值,打包成一個結(jié)構(gòu),名稱叫"狀態(tài)",例子如下: Structure 狀態(tài)
Dim 血 As Integer
Dim 藍(lán) As Integer
Dim 經(jīng)驗值 As Integer
End Structure就可以這樣使用:dim Zt as 狀態(tài)Zt.血=100Zt.藍(lán)=100Zt.經(jīng)驗值=500到訪問屬性值的時候:XXX=Zt.血Zt.經(jīng)驗值+=100