为什么以下代码打印出以下值,特别是关于VB.Net中的CShort
方法?
Console.WriteLine(CShort(False)) 'prints 0
Console.WriteLine(CShort(True)) 'prints -1
我已经能够使用Visual Basic type conversions中的许多内容重现这一点。
这只是Visual Basic中的设计决定吗?
答案 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)。