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
でしょうか? バイトが負になることはあり得ませんか?