.net 转换为十六进制会返回奇怪的错误
下面的简单表达式在我这边引发了.net 转换为十六进制会返回奇怪的错误,.net,vb.net,hex,.net,Vb.net,Hex,下面的简单表达式在我这边引发了ArgumentOutOfRange: 100.ToString("X4") 我尝试用其他常量值和整型变量替换100,得到了相同的结果。我已经将X4更改为X6,也只是X,再次得到相同的异常。错误消息是: Enum value was out of legal range. 以前有没有人见过这个,或者我错过了一些非常简单的东西 编辑 这是一个完整的小程序,可以在我的终端上复制它(一个控制台Win应用程序,添加对System.Drawing的引用): 编辑2 看起来
ArgumentOutOfRange
:
100.ToString("X4")
我尝试用其他常量值和整型变量替换100
,得到了相同的结果。我已经将X4
更改为X6
,也只是X
,再次得到相同的异常。错误消息是:
Enum value was out of legal range.
以前有没有人见过这个,或者我错过了一些非常简单的东西
编辑
这是一个完整的小程序,可以在我的终端上复制它(一个控制台Win应用程序,添加对System.Drawing的引用):
编辑2
看起来错误(bug?)在调试器中。该值在运行时打印良好。多亏了乔恩。如果有人感兴趣,这是VS2010终极SP1+Win 7(64位)。适合我。。。你能提供一个简短但完整的程序来演示这个问题吗?@JonSkeet:谢谢你,Jon。添加了一个示例。但这不是使用
100.ToString(“X4”)
的示例,是吗?你的代码在字符串中给了我一个ArgumentOutOfRangeException
。Remove
…@JonSkeet:对不起,我是从我的情况来看这个问题的,我试图用一个简单的整数100
来简化mMinColor.ToArgb()
,以得到我上面提到的错误。我在该行上放置了一个断点,并使用Quick Watch窗口计算100.ToString(“X4”)
,得到了该错误。听起来这是Quick Watch中的一个bug,而不是VB.NET本身。请尝试在不需要调试器的情况下复制。。。
Imports System.drawing
Module Module1
Sub Main()
Dim x As New ColorRange()
Console.Write(x.ToString())
Console.Read()
End Sub
Class ColorRange
Public Overrides Function ToString() As String
Return 100.ToString("X") & " - " & 100.ToString("X")
End Function
End Class
End Module