1

我正在将 VB6 程序转换为 C#,并且遇到了以下代码块(b 是来自字符串的字节数组,lngLen 是我们正在初始化的长度指针):

If UBound(b) <= 0 Then
    lngLen = UBound(b)
ElseIf UBound(b) >= 2 Then
    If b(UBound(b) - 2) >= 0 And b(UBound(b) - 1) = &HFE And b(UBound(b)) = &HFF Then
        lngLen = UBound(b) - 3
    Else
        lngLen = UBound(b)
    End If
Else
    lngLen = UBound(b)
End If

在第 4 行,我可以看出它正在检查字节数组的最后两个字符中的 BOM,但第一个检查是b(UBound(b) - 2) >= 0做什么的?一个字节不可能是负数吗?

4

1 回答 1

1

是的,VB6 字节不可能为负数。这些值只能是 0-255,如手册中所述

检查b(UBound(b) - 2) >= 0将始终True并且可以从 VB6 代码中删除。检查不需要迁移到 C#。

于 2013-06-11T10:42:03.763 回答