我有以下示例代码
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中查看字符代码时发现了问题。
答案 0 :(得分:1)
有关解决方法,请参阅命令
? System.Text.Encoding.Unicode.GetBytes(q)
我个人认为任何可接受的VB.Net代码都应该在立即窗口中可以接受,并且真的不明白为什么当VB.Net不提供等效时AscW会导致错误(例如在C#中,但不是VB.Net ,您可以将Char变量强制转换为Integer以获取字符代码。)
答案 1 :(得分:0)
尽管您使用的是旧的VB代码,但您正在做正确的事情(并且输出在任何情况下都可以)。如果您需要AscW
(,Asc
,ChrW
等功能,则必须依靠此“旧代码”来获取您想要的内容(直接或通过{{ 1}}哪个,顺便说一句,没有表现出不同的行为)。但是,在任何其他情况下,您应该避免使用这个旧代码。
在立即窗口中测试这两行:
Microsoft.VisualBasic.Strings
正如您所看到的,在第一行(旧版本)中出现“错误”(VS 2010,右键单击该行并选择“QuickWatch”),但在第二行(.NET版本)中没有
因此,如果你分析情况(你要求某种语言(VB.NET)支持它自己的话),你观察到的行为可以被认为是一个无害的错误(在执行中没有真正的影响)或多或少是可以理解的功能和旧语言(VB)的功能;旧的功能可能并不完美。