C# 代码转换

C# 代码转换,c#,vb.net,C#,Vb.net,我正试图将一些代码从C#转换为VB.NET,我被这一点困住了 C#代码: static void test() { byte[]argss=新字节[10]{0,1,2,3,4,5,6,7,8,9}; short[]值=新的short[argss.Length/2]; 对于(int i=0;i

我正试图将一些代码从C#转换为VB.NET,我被这一点困住了

C#代码:

static void test()
{
byte[]argss=新字节[10]{0,1,2,3,4,5,6,7,8,9};
short[]值=新的short[argss.Length/2];
对于(int i=0;i值[i/2]=(短)((argss[i+1]我认为问题在于这一行

Convert.ToInt16(argss(i + 1) << 8 Or argss(i + 0))

Convert.ToInt16(argss(i+1)为什么要将for循环转换为while循环?自从我用VB编写以来已经有一段时间了,但我认为这行应该是这样的:
values(i/2)=Convert.ToInt16(argss(i+1)@Slai它们生成的代码与我手工转换的代码几乎相同,输出也相同。始终从源代码文件顶部的Option Strict On开始,可以帮助您发现使用了错误的除法运算符。您希望使用\而不是/。您必须做的非直观的事情是CInt(argss(I+1))@HansPassant谢谢就是这样,也谢谢你解释为什么它会这样做,而不是仅仅用勺子喂我。正如上面Hans Passant所指出的,这确实是解决方法。谢谢。
 Sub Test()
    Dim argss() As Byte = New Byte() {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    Dim values(argss.Length / 2) As Short

    Dim i As Integer = 0
    While i < argss.Length
        values(i / 2) = Convert.ToInt16(argss(i + 1) << 8 Or argss(i + 0))
        Console.WriteLine(values(i / 2))
        i += 2
    End While
    Console.ReadLine()
End Sub
Convert.ToInt16(argss(i + 1) << 8 Or argss(i + 0))
Console.WriteLine(CInt(argss(i + 1)) << 8 Or argss(i + 0))