C# 如何转换ReDim?
我想把vb代码翻译成C#,代码有问题。我在线使用convertor,但不能用于这种情况。有人知道如何翻译它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
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,我得到了你的建议,因为我在字节码方面非常年轻。非常感谢。