当预期为0时,Int32.Parse()返回0x0001 - 为什么?

时间:2010-12-29 06:39:08

标签: c# asp.net asp.net-2.0

我正在使用Int32.Parse()来转换DropDownList的值;但是转换后返回的值是:

  

0×0001

而不是预期的0

我的代码是:

myObject.Id = Int32.Parse(ddlName.SelectedValue);

在这种情况下,所选值为“0”。为什么它返回'0x0001'而不是0?发生了什么,是一个内存寄存器地址?

2 个答案:

答案 0 :(得分:4)

您是否通过调试窗口进行检查?

检查您是否在Visual Studio watch中启用了“以十六进制显示”。

答案 1 :(得分:2)

int.Parse(string s)使用默认的CultureInfo,但是我绝对肯定在任何文化中都不能将“0”解析为0x0001(我循环了所有文化,看看是否为“0”将被解析为包含“0x”的其他值。所以别的地方错了。我想你最好检查一下:

(1) string s = ddlName.SelectedValue.ToString();  //make sure s is "0"
(2) int num = int.Parse(s);  //check if num is 0 or not
(3) myObject.Id = num;   //check the type of myObject.Id(supposed an int/long)
(4) Check the "set" method of myObject.Id (if there is one)