当我使用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.
}
我认为没有区别我是对的吗?如果没有,你可以解释这两种方式之间的区别。女巫一个更有效吗?
答案 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)
唯一的区别可能是int
和System::Int32
支持的值范围明确。
System::Int32
使那些读取代码的人更加明确32位。一个人应该使用int
,只需要一个“整数”,并使用System::Int32
,其中大小很重要(加密代码,结构),以便读者在保持相同的同时清除它。 / p>
使用int
或System::Int32
生成的代码将是相同的:差异纯粹是显式可读性或代码外观之一。
答案 2 :(得分:1)
没有。其中一个只是另一个的别名。
答案 3 :(得分:1)
int
与.Net的System.Int32
相同。
答案 4 :(得分:1)
显然,与C和常规C ++不同,C#和C ++ / CLI的int
类型总是32位长。
这由MSDN确认,所以答案是两者之间没有区别,除了int
输入比System::int32
快得多的事实。
答案 5 :(得分:0)
这两个int
和int32
确实是同义词; int
看起来会更加熟悉,Int32
使那些阅读代码的人更加明确32位。