我正在看一些旧的VB6代码.我是VB的新手,我来自C / Java背景,所以我不理解一些赋值语句.这是一个例子 – Private Type UGH Rsp(3) As Byte ProgramId(7) As Byte RID(7) As Byte TID(3) As Byte FL(39) As Byte End Ty
Private Type UGH Rsp(3) As Byte ProgramId(7) As Byte RID(7) As Byte TID(3) As Byte FL(39) As Byte End Type Private UHeader As UGH
之后,任务如下进行─
With UHeader StringToByteArray UHeader.ProgramId(), "ABCDPQRS"
我的问题是,为什么在上面的赋值中使用了ProgramId之后的括号?对我来说,这似乎是一个函数调用,但它显然不是函数调用.那这是什么?
嗯,实际上并不需要它.在没有括号的情况下调用相同的行将完全相同.它被允许的原因是因为它是一个字节数组.也许重写这样的行会使它更具可读性:
call StringToByteArray(UHeader.ProgramId(), "ABCDPQRS")
但这也是有效的:
call StringToByteArray(UHeader.ProgramId, "ABCDPQRS")
如果StringToByteArray方法是函数而不是子例程,那么你可能会更有意义:
Private Function StringToByteArray(ByVal strValue As String) As Byte() 'conversion code left out End Function
然后你可以像这样调用它:
UHeader.ProgramId() = StringToByteArray("ABCDPQRS")
或这个:
UHeader.ProgramId = StringToByteArray("ABCDPQRS")