转换C#的​​字节数组功能,VB.NET

问题描述:

我试图把这段代码转换转换C#的​​字节数组功能,VB.NET

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

你有一个System.Linq的导入吗? –

+0

是的,这就是为什么它说'没有选择接受...' – Smith

+0

这是一个非常复杂的方式添加'10'的集合。请注意,'feeds'的值会被忽略,并且会一直添加10。我没有看到'CType'这个转换器http://converter.telerik.com/ – Slai

我不明白为什么指定类型参数失败,但这不是必需的 - 并且CType的位置看起来被打破。如果更改Select呼吁:

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

然后再编译 - 但你也可以完全删除CTYPE的:在C#代码太

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

(这种简化的作品,在此:

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

可以被简化为:

.Select(x => (byte) 10)