首页 > 解决方案 > 替换 vb.net 中的 UBound

问题描述

我正在将现有库移植到 .net 标准 2.0,我想我已经达到了我的最后一个错误(希望如此)我需要更改 UBound 从我正在阅读的意思是 Array.Length?

 If aryTemp Is Nothing Then
                ReDim aryTemp(0)
            Else
                ReDim Preserve aryTemp(UBound(aryTemp) + 1)
            End If
            aryTemp(UBound(aryTemp)) = _TransactionItems(i)

我的代码会是 ReDim Preserve aryTemp((aryTemp).Length + 1)吗?由于我无法将 UBound 移植到 .net 标准,我将如何更改它?

标签: vb.netasp.net-core

解决方案


这是您的 VB6 导入代码的 VB.NET 等效项:

If aryTemp Is Nothing Then
    Redim aryTemp(0)
Else
    ReDim Preserve aryTemp(aryTemp.Length)
End If
aryTemp(aryTemp.Length -1 ) = _TransactionItems(i)

此代码期望,该数组的 LBound 始终为 0。它可能是 VB6 中的其他内容。

我不确定 Redim Preserve 将如何与 .NET Standard 一起使用。

如评论中所述,将此数组更改List(Of Integer)为更好的主意。Redim Preserve现在应该是非常非常罕见的一段代码,仅适用于非常特殊的场景。


推荐阅读