铸造年份ToInt16无效

时间:2009-10-05 11:42:03

标签: c# casting

我有一个基本上做的功能:

internal static short GetPresentYear()
{
    return Convert.ToInt16(DateTime.Now.Year - 1);
}

现在当我尝试使用该功能时,调试器显示我得到0x07d9而不是2008年...

我在这里做错了什么?我如何让它返回2008年?

感谢。

修改:我知道我可以使用int代替short,但数据库旨在存储smallint,因此我不得不使用short

5 个答案:

答案 0 :(得分:3)

这对我来说确实会回归2008年。那是你真正的代码吗?

有关信息,0x07d9只是2009年的十六进制。您可以通过将鼠标悬停在值上并选中/取消选中“十六进制显示”来在调试器中切换它。

答案 1 :(得分:3)

您的输出窗口中是否已启用Hexadecimal Display

右键单击输出窗口,它是上下文菜单中的一个选项。

答案 2 :(得分:3)

十六进制0x07d9是2009年十进制,所以一切都正确。

右键单击locals / watch窗口并取消选中十六进制设置。

答案 3 :(得分:0)

您是否将调试器设置为显示十六进制值? 0x07d9是2009年的十六进制。浏览监视窗口,右键单击并检查未选中“十六进制显示”。

答案 4 :(得分:0)

我得到了2008.而不是0x07d9(Hexadecimal Display