在VB.NET中,Integer和Int32有什么区别吗?

22
在VB.NET中,IntegerInt32有区别吗?如有,请解释。

@MitchWheat...谷歌给了我混乱的答案。所以,我想在这里问一下。我知道如何搜索。 - Vikram
2
好的,Int32和Integer是不同的。在没有现有标准的项目中,你会建议使用哪一个 - 以及为什么?这个想法大概是Vikram问问题背后的原因。 - finch
1个回答

34

就功能而言,类型IntegerSystem.Int32之间没有区别。在VB.NET中,Integer只是System.Int32类型的别名。

但是,标识符Int32Integer并不完全相等。Integer始终是System.Int32的别名,并且被编译器理解。而Int32则没有特殊处理,像任何其他类型一样通过普通名称解析进行。因此,在某些情况下,Int32可能会绑定到不同的类型。虽然这种情况非常罕见;没有人应该定义自己的Int32类型。

以下是演示差异的具体复现。

Class Int32

End Class

Module Module1
    Sub Main()
        Dim local1 As Integer = Nothing
        Dim local2 As Int32 = Nothing
        local1 = local2 ' Error!!! 
    End Sub
End Module

在这种情况下,local1local2实际上是不同的类型,因为Int32绑定到用户定义的类型而不是System.Int32


2
@JaredPar,感谢您的解释,也非常感谢您没有像“你的谷歌坏了吗?”这样发表评论。 :) - Vikram
2
@MitchWheat 我在谷歌上搜索了这个问题,但没有找到一个合适的解释。 大多数链接都说“没有区别”,这是不正确的。 MSDN网站上有一个答案给出了一个相当好的解释,但它在我的谷歌搜索结果中相当靠后。 - JaredPar
1
没有区别。你的回答说:“在功能上,这些类型之间没有区别”。 - Mitch Wheat
2
@Mitch,那是我最初在谷歌上看到的帖子。SO占优势。 - djv
1
@MitchWheat 这只是一个人为制造的例子,以明确展示问题。正如我所说,这种情况最常见的出现方式是在生成的代码中。 - JaredPar
显示剩余10条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接