C# 如何转换ReDim?

C# 如何转换ReDim?,c#,vb.net,C#,Vb.net,我想把vb代码翻译成C#,代码有问题。我在线使用convertor,但不能用于这种情况。有人知道如何翻译它 Private bytIV() As Byte = _ {12, 241, 10, 21, 90, 74, 11, 39, 9, 91, 45, 78, 189, 211, 133, 62, 121, 22, 101, 34, 90, 74, 121, 39, 93, 9, 45, 78, 1, 211, 33, 162} If (_Cryp

我想把vb代码翻译成C#,代码有问题。我在线使用convertor,但不能用于这种情况。有人知道如何翻译它

        Private bytIV() As Byte = _
        {12, 241, 10, 21, 90, 74, 11, 39, 9, 91, 45, 78, 189, 211, 133, 62, 121, 22, 101, 34, 90, 74, 121, 39, 93, 9, 45, 78, 1, 211, 33, 162}

       If (_CryptoService.LegalBlockSizes.Length > 0) Then
            Dim maxSize As Integer = _CryptoService.LegalBlockSizes(0).MaxSize
            ReDim Preserve bytIV(sTemp.Length - 1)
            If sTemp.Length * 8 > maxSize Then
                ReDim Preserve bytIV(maxSize / 8 - 1)
            End If
        End If
bytIV()在加密作业中到底使用了什么

如何在Csharp中翻译ReDim?
非常感谢。

C#中可用的最接近的东西是
数组。Resize
,它是标准的.NET,因此在VB中也可用。您可能想先在VB代码中使用它,看看是否得到相同的结果,然后将其转换为C#会更容易

在代码中,这些行:

ReDim Preserve bytIV(sTemp.Length-1)
ReDim保留字节TIV(最大大小/8-1)
将变成这样:

Array.Resize(bytIV,sTemp.Length)
Array.Resize(bytIV,maxSize/8)
请注意,
Array.Resize
采用新的长度,而不是新的上限。将这些行转换为C#将包括附加分号

我还应该指出,由于
选项严格限制在
(应该一直如此),VB代码必须使用整数除法:

ReDim reserve bytIV(maxSize\8-1)
Array.Resize(bytIV,maxSize\8)
在C#中,当一个
int
除以另一个时,整数除法是自动的,因此运算符看起来与常规除法相同

编辑:在Mary上述评论的提示下,我意识到将
Array.Resize
调用从VB转换为C#也需要添加
ref
关键字,因为第一个参数是通过引用传递的

Array.Resize(ref bytIV,sTemp.Length);
Array.Resize(ref bytIV,maxSize/8);

你的解决方案对我有效。多谢各位

Array.Resize(ref bytIV, sTemp.Length);
Array.Resize(ref bytIV, maxSize / 8);

bytIV
是初始化向量。这是一个过于笼统的话题,不值得讨论,但你可以搜索这些关键词来找出重点。请参阅(
RijndaelManaged
,但可调整)。Array.Resize(ref yourray,i+1);谢谢@jmcilhinney,我得到了你的建议,因为我在字节码方面非常年轻。非常感谢。