我正在看一些旧的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 Type
Private UHeader As UGH
Run Code Online (Sandbox Code Playgroud)
之后,任务如下进行─
With UHeader
StringToByteArray UHeader.ProgramId(), "ABCDPQRS"
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么在上面的赋值中使用了ProgramId之后的括号?对我来说,这似乎是一个函数调用,但它显然不是函数调用.那这是什么?
嗯,实际上并不需要它.在没有括号的情况下调用相同的行将完全相同.它被允许的原因是因为它是一个字节数组.
也许重写这样的行会使它更具可读性:
call StringToByteArray(UHeader.ProgramId(), "ABCDPQRS")
Run Code Online (Sandbox Code Playgroud)
但这也是有效的:
call StringToByteArray(UHeader.ProgramId, "ABCDPQRS")
Run Code Online (Sandbox Code Playgroud)
如果StringToByteArray方法是函数而不是子例程,那么你可能会更有意义:
Private Function StringToByteArray(ByVal strValue As String) As Byte()
'conversion code left out
End Function
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样调用它:
UHeader.ProgramId() = StringToByteArray("ABCDPQRS")
Run Code Online (Sandbox Code Playgroud)
或这个:
UHeader.ProgramId = StringToByteArray("ABCDPQRS")
Run Code Online (Sandbox Code Playgroud)