转换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
它给出了一个错误
重载决策失败因为没有可访问的'选择'接受这个类型参数的数量。
任何人都可以帮我吗?
答
我不明白为什么指定类型参数失败,但这不是必需的 - 并且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)
你有一个System.Linq的导入吗? –
是的,这就是为什么它说'没有选择接受...' – Smith
这是一个非常复杂的方式添加'10'的集合。请注意,'feeds'的值会被忽略,并且会一直添加10。我没有看到'CType'这个转换器http://converter.telerik.com/ – Slai