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

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

有帮助吗?

解决方案

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

System::Int32 使 32 位对于阅读代码的人来说更加明确。一个应该使用 int 只需要“一个整数”,然后使用 System::Int32 其中大小很重要(密码、结构),因此读者在保持不变的同时会清楚它。

使用 int 或者 System::Int32生成的代码将是相同的:区别纯粹是显式可读性或代码外观之一。

其他提示

C++/CLI 语言规范 (p.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 位 ints。

但要小心 long:Visual C++将其定义为32位,即 不是 与 C# long 相同。C++ 相当于 System::Int64long long.

no。其中一个只是另一个的别名。

c#中的int与.NET的System.Int32相同。

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

这得到了证实 微软软件定义网络, ,所以答案是两者之间没有区别,除了 int 打字速度比 System::int32.

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top