将VB.Net转换为C时出错#
问题描述:
我有这个VB.Net函数(来自其他项目),我需要将它转换为C#
。将VB.Net转换为C时出错#
Private Function Convert(ByVal Value As String) As String
Dim transformed = Encoding.Unicode.GetBytes(Value).Select(_
Function(item) Not item)
Return Encoding.Unicode.GetString(transformed.ToArray())
End Function
这是我已经试过:
private string Convert(string Value)
{
return Encoding.Unicode.GetString(Enumerable.ToArray<byte>(Enumerable.Select<byte, byte>((IEnumerable<byte>)Encoding.Unicode.GetBytes(Value),
(Func<byte, byte>)(item => ~item))));
}
我得到两个错误:
- 无法隐式转换类型 '诠释' 到 '字节'。一个显式转换存在(是否缺少强制转换?)
- 无法转换lambda表达式的委托类型“System.Func”,因为一些块的返回类型不隐式转换为委托返回类型
任何人都可以帮助我吗?
答
尝试下面的代码。
我不知道为什么LINQ Select将字节数组转换为int数组,因此显式转换。
private string Convert(string value)
{
var invertedBytes = Encoding.Unicode.GetBytes(value).Select(b => (byte)~b).ToArray();
return Encoding.Unicode.GetString(invertedBytes);
}
答
你可以试试这个C#代码。
private string Convert(string Value)
{
dynamic transformed = Encoding.Unicode.GetBytes(Value).Select(item => (byte)~item);
return Encoding.Unicode.GetString(transformed.ToArray());
}
我已经使用这个工具转换 - http://converter.telerik.com/
OP在VB.NET中执行按位不操作,“〜item”在C#中是等效的。你的代码不会编译。请确认。 – Channs 2014-09-30 05:47:32
@ChannappaJagadish,是的,你是对的,所以我已经更新了我的代码,使其编译,谢谢! – 2014-09-30 06:10:09