3

当我使用 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.
}

我认为没有区别对吗?如果没有,你能解释一下这两种方式有什么区别吗?女巫一更有效?

4

6 回答 6

4

C++/CLI 语言规范(第50 页)说:

基本类型映射到实现提供的相应值类类型,如下所示:

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

C# 不同,后者int专门定义为System.Int32. 在 C++/CLI 中,就像在 ISO C++ 中一样,anint具有“执行环境架构所建议的自然大小”,并且只保证至少有 16 位。

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

但请注意long:Visual C++ 将其定义为 32 位,这C# long 不同。的 C++ 等价物System::Int64long long.

于 2011-05-23T06:25:38.190 回答
2

唯一的区别可能是明确了int和支持的值范围System::Int32

System::Int32使 32 位对阅读代码的人来说更加明确。应该int在只需要“整数”的地方使用,并System::Int32在大小很重要的地方使用(加密代码、结构),以便读者在保持不变的同时清楚它。

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

于 2011-05-23T05:41:08.840 回答
1

不,其中一个只是另一个的别名。

于 2011-05-23T05:43:40.593 回答
1

int在 C# 中与 .Net 中的相同System.Int32

于 2011-05-23T05:44:46.103 回答
1

显然,与 C 和常规 C++ 不同,C# 和 C++/CLI 具有int始终为 32 位长的类型。

MSDN证实了这一点,因此答案是两者之间没有区别,除了int打字速度比System::int32.

于 2011-05-23T05:46:13.737 回答
0

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

于 2012-09-01T05:01:54.783 回答