如何解决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位内容对于阅读您的代码的人更加明确。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。