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 行目で、バイト配列の最後の 2 文字の 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 に答える