为什么CShort(True)= -1

时间:2014-04-04 21:21:34

标签: vb.net boolean type-conversion

为什么以下代码打印出以下值,特别是关于VB.Net中的CShort方法?

Console.WriteLine(CShort(False)) 'prints 0
Console.WriteLine(CShort(True)) 'prints -1

我已经能够使用Visual Basic type conversions中的许多内容重现这一点。

这只是Visual Basic中的设计决定吗?

2 个答案:

答案 0 :(得分:2)

In Visual Basic,布尔数据类型存储为16位有符号整数。

在此表示中,-1计算为16位,0当然是16位零位。

因此,如果您希望保持关系True = Not False,则True必须具有值-1。

答案 1 :(得分:1)

它不是一个特定于VB的东西 - 所有VB都隐含地为你做短路。 在C#中,通过显式调用System.Convert方法得到相同的结果 - 例如,System.Convert.ToInt16(true)。