int和System :: Int32之间的区别

时间:2011-05-23 05:39:16

标签: .net c++-cli int int32

当我使用C ++ .NET框架编写应用程序时,我想问一个问题。

当我为“for循环”编写代码时,我总是使用这种编码方式:

for( int i=0; i<somevalue; ++i ) {
    // Some code goes here.
}

但是当我使用C ++ .NET时,我可以编写

for( System::Int32 i=0; i<somevalue; ++i ) {
    // Some code goes here.
}

我认为没有区别我是对的吗?如果没有,你可以解释这两种方式之间的区别。女巫一个更有效吗?

6 个答案:

答案 0 :(得分:4)

C++/CLI language specification(第50页)说:

  

基本类型映射到   相应的值类类型   由实施提供,如   如下:

     
      
  • signed char映射到System::SByte
  •   
  • unsigned char映射到System::Byte
  •   
  • 如果签署了普通char,则char会映射到System::SByte;否则,它   映射到System::Byte
  •   
  • 对于所有其他基本类型,映射是实现定义 [强调我的]。
  •   

与C#不同,其中int被明确定义为System.Int32的别名。在C ++ / CLI中,与ISO C ++一样,int具有“执行环境体系结构建议的自然大小”,并且只保证至少有16位。

在实践中,.NET不能在16位系统上运行,因此您可以安全地假设32位int

但请注意long:Visual C ++将其定义为32位,与C#long相同。与System::Int64等效的C ++是long long

答案 1 :(得分:2)

唯一的区别可能是intSystem::Int32支持的值范围明确。

System::Int32使那些读取代码的人更加明确32位。一个人应该使用int,只需要一个“整数”,并使用System::Int32,其中大小很重要(加密代码,结构),以便读者在保持相同的同时清除它。 / p>

使用intSystem::Int32生成的代码将是相同的:差异纯粹是显式可读性或代码外观之一。

答案 2 :(得分:1)

没有。其中一个只是另一个的别名。

答案 3 :(得分:1)

C#中的{p> int与.Net的System.Int32相同。

答案 4 :(得分:1)

显然,与C和常规C ++不同,C#和C ++ / CLI的int类型总是32位长。

这由MSDN确认,所以答案是两者之间没有区别,除了int输入比System::int32快得多的事实。

答案 5 :(得分:0)

这两个intint32确实是同义词; int看起来会更加熟悉,Int32使那些阅读代码的人更加明确32位。