将VB.Net转换为C#时出错
本文关键字:出错 转换 VB Net | 更新日期: 2023-09-27 18:25:05
我有这个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))));
}
我有两个错误:
- 无法将类型"int"隐式转换为"byte"。存在显式转换(是否缺少强制转换?)
- 无法将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/