+ -
当前位置:首页 → 问答吧 → VB Structure其中一个参数赋值后其余参数值变成一样了.为什么?

VB Structure其中一个参数赋值后其余参数值变成一样了.为什么?

时间:2011-08-01

来源:互联网

VB code
Public Class Form1

Public Structure MMLCHILDSEL
        Public Index() As String
        Public paraIndex() As String
        Public paraName() As String
        Public paraRange(,) As String
    End Structure

    Dim paraRecord As MMLCHILDSEL


    Sub test()

        Dim a(100) As String
        paraRecord.paraIndex = a
        paraRecord.Index = a
        paraRecord.paraName = a

        paraRecord.Index(0) = "0"
        paraRecord.paraIndex(0) = "1"
        paraRecord.paraName(0) = "value"
        MsgBox(paraRecord.Index(0))
        MsgBox(paraRecord.paraIndex(0))
        MsgBox(paraRecord.paraName(0))
    End Sub

End Class



为什么MsgBox打印出来的都是paraName的值value,谁能告诉我什么原因,应该怎么改?谢谢了!!!!

作者: caesar717   发布时间: 2011-08-01

改 自定义的 type
就好了,Structure从来没有用过

作者: ybh37   发布时间: 2011-08-01

VS2008不再支持type我才用Structure的啊

作者: caesar717   发布时间: 2011-08-01

既然都用2008了,为什么不直接用类呢?

作者: ybh37   发布时间: 2011-08-01

因为string是引用类型,所以:
VB code

        paraRecord.paraIndex = a
        paraRecord.Index = a
        paraRecord.paraName = a

        paraRecord.Index(0) = "0"               '相当于a(0)="0"
        paraRecord.paraIndex(0) = "1"           '相当于a(0)="1"
        paraRecord.paraName(0) = "value"        '相当于a(0)="value"
        a(0) = "New Value"                      '加上这一句的话,下面所有msgbox都应该显示 NewValue

        MsgBox(paraRecord.Index(0))
        MsgBox(paraRecord.paraIndex(0))
        MsgBox(paraRecord.paraName(0))


要实现你所说的效果,改成下面就行了:
VB code

Sub test()

        Dim a(100) As String
        Dim b(100) As String
        Dim c(100) As String
        paraRecord.paraIndex = a
        paraRecord.Index = b
        paraRecord.paraName = c

        paraRecord.Index(0) = "0"               '相当于a(0)="0"
        paraRecord.paraIndex(0) = "1"           '相当于b(0)="1"
        paraRecord.paraName(0) = "value"        '相当于c(0)="value"

        MsgBox(paraRecord.Index(0))
        MsgBox(paraRecord.paraIndex(0))
        MsgBox(paraRecord.paraName(0))
    End Sub


作者: BestBadGod   发布时间: 2011-08-01

热门下载

更多