将c#bytes数组函数转换为vb.net

时间:2017-08-11 11:09:57

标签: c# vb.net type-conversion

我正在尝试转换此代码

public static byte[] NewLine(this byte[] bytes, int feeds = 1)
    {
      return bytes.AddBytes(((IEnumerable<byte>) new byte[feeds]).Select<byte, byte>((Func<byte, byte>) (x => (byte) 10)).ToArray<byte>());
    }

在线转换器生成此

<System.Runtime.CompilerServices.Extension> _
    Public Function NewLine(ByVal bytes() As Byte, Optional ByVal feeds As Integer = 1) As Byte()
      Return bytes.AddBytes((DirectCast(New Byte(feeds - 1){}, IEnumerable(Of Byte))).Select(Of Byte, Byte)CType(Function(x) CByte(10), Func(Of Byte, Byte)).ToArray())
    End Function

给出错误

  

重载解析失败,因为没有可访问的“选择”接受此操作   类型参数的数量。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

我不清楚为什么指定类型参数失败,但无论如何都不需要 - 并且CType的位置看起来被打破了。如果您将Select调用更改为:

.Select(CType(Function(x) CByte(10), Func(Of Byte, Byte)))

然后它编译 - 但你也可以完全摆脱CType:

.Select(Function(x) CByte(10))

(这种简化也适用于C#代码,其中:

.Select<byte, byte>((Func<byte, byte>) (x => (byte) 10))

可以简化为:

.Select(x => (byte) 10)