2

我有以下示例代码

Dim q As Char = "a"
Dim res As String = CStr(AscW(q))

res正确包含“97”,但是当我AscW(q)在手表或立即使用时它返回消息:Cannot convert to 'Integer'.

是错误还是 Visual Studio 还是我做错了什么?

如何在即时中看到字符代码。

注意 提供的代码只是一个示例。尝试在监视窗口中查看字符代码时发现了问题。

4

2 回答 2

1

对于解决方法,命令怎么样

? System.Text.Encoding.Unicode.GetBytes(q)

我个人认为任何可接受的 VB.Net 代码在即时窗口中都应该是可接受的,并且真的不明白为什么当 VB.Net 不提供等效项时 AscW 会导致错误(例如在 C# 中,但不是 VB.Net,你可以强制转换将 Char 变量转换为 Integer 以获取字符代码)。

于 2014-04-09T15:40:12.897 回答
0

尽管您使用的是旧的 VB 代码,但您所做的一切都是正确的(无论如何输出都可以)。如果您需要AscW(, Asc,ChrW等) 之类的功能,您将不得不依靠这个“旧代码”来获得您想要的东西(直接或通过Microsoft.VisualBasic.Strings它,顺便说一句,不会显示不同的行为)。但是,在任何其他情况下,您都应该避免使用这个旧代码。

在立即窗口中测试这两行:

Dim res As String = CStr(5)
res = 5.ToString()

如您所见,在第一行(旧版本)中出现“错误”(VS 2010,右键单击该行并选择“QuickWatch”),但在第二行(.NET 版本)中没有。

因此,如果您分析情况(您要求某种语言(VB.NET)支持它自己的所有功能和来自旧语言(VB)的语言;使用旧语言,某些次要功能可能并不完美)。

于 2013-09-20T07:52:04.727 回答