int和System :: Int32之间的区别。

| 当我使用C ++ .NET框架编写应用程序时,我想问一个问题。 当我完全为\“ for loop \”编写代码时,我总是使用这种编码方式:
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.
}
我认为没有区别,对吗?如果否,您能否解释这两种方式之间的区别。女巫一个更有效?     
已邀请:
唯一的区别可能是explicit2ѭ和
System::Int32
支持的值范围是明确的。 “ 3”使32位的内容对于阅读代码的人更加明确。在只需要\'integer \'的情况下,应使用
int
,而在大小重要的地方(密码代码,结构)应使用
System::Int32
,以便读者在保持相同的情况下将其清除。 使用
int
System::Int32
所得到的代码将是相同的:区别纯粹是显式可读性或代码外观之一。     
C ++ / CLI语言规范(第50页)指出:   基本类型映射到   对应的值类别类型   实施提供的   如下:         
signed char
映射到
System::SByte
。   
unsigned char
映射到
System::Byte
。   如果一个普通的
char
签名,则
char
映射到
System::SByte
;否则   映射到
System::Byte
。   对于所有其他基本类型,映射是实现定义的[强调我的]。    这与C#不同,在C#中,专门将ѭ2定义为
System.Int32
的别名。在C ++ / CLI中,就像在ISO C ++中一样,“ 2”具有“执行环境的体系结构建议的自然大小”,并且仅保证至少具有16位。 但是,实际上,.NET不能在16位系统上运行,因此您可以放心地假设32位
int
。 但是请注意
long
:Visual C ++将其定义为32位,这与C#long相同。
System::Int64
的C ++等效项是
long long
。     
不。其中一个只是另一个的别名。     
C#中的“ 2”与.Net的“ 18”相同。     
显然,与C和常规C ++不同,C#和C ++ / CLI具有始终为32位长的
int
类型。 这已由MSDN确认,因此答案是两者之间没有区别,除了
int
System::int32
键入速度快得多的事实。     
int
和ѭ30indeed这两个确实是同义词。
int
看起来会更熟悉,
Int32
会使32位内容对于阅读您的代码的人更加明确。     

要回复问题请先登录注册