我正在使用Int32.Parse()来转换DropDownList的值;但是转换后返回的值是:
0×0001
而不是预期的0
。
我的代码是:
myObject.Id = Int32.Parse(ddlName.SelectedValue);
在这种情况下,所选值为“0”。为什么它返回'0x0001'而不是0?发生了什么,是一个内存寄存器地址?
答案 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)