上色

Code Block

2013年8月2日 星期五

[Date Structure] Class和Structure

Class是reference type,程式執行時資料儲存在heap中
Structure是Value type,程式執行時資料儲存在stack中

因此在method中使用structure時,事實上是建立該structure的副本,因此改動這個數值並不會影響本來的資料,如︰

Structure TotalTime
  Dim tt As String
End Structure

Dim result(100) as TotalTime '定義result為TotalTime陣列 

For Each a As TotalTime In result
    a.tt=a.tt+1
Next
此時,result陣列中的數值並不會改變,因為Structure是Value type,所以For...Each時是複製一個result的副本。
因此需將result定義為class才可正確獲得預期效果。

但是同樣需要注意的是,因為Class是reference type,必須以New關鍵字一一將陣列中的元素定義為執行個體(物件)

沒有留言:

張貼留言