Ascw返回“无法转换为'整数'。”在观看或立即

时间:2013-09-20 07:28:07

标签: vb.net visual-studio-2010 visual-studio-2012

我有以下示例代码

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

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

是错误还是Visual Studio,还是我做错了?

如何在Immediate中查看字符代码。

注意 提供的代码只是一个例子。尝试在Watch Window中查看字符代码时发现了问题。

2 个答案:

答案 0 :(得分:1)

有关解决方法,请参阅命令

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

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

答案 1 :(得分:0)

尽管您使用的是旧的VB代码,但您正在做正确的事情(并且输出在任何情况下都可以)。如果您需要AscW(,AscChrW等功能,则必须依靠此“旧代码”来获取您想要的内容(直接或通过{{ 1}}哪个,顺便说一句,没有表现出不同的行为)。但是,在任何其他情况下,您应该避免使用这个旧代码。

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

Microsoft.VisualBasic.Strings

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

因此,如果你分析情况(你要求某种语言(VB.NET)支持它自己的话),你观察到的行为可以被认为是一个无害的错误(在执行中没有真正的影响)或多或少是可以理解的功能和旧语言(VB)的功能;旧的功能可能并不完美。