gpt4 book ai didi

.net - int 和 System::Int32 的区别

转载 作者:行者123 更新时间:2023-12-01 09:06:59 24 4
gpt4 key购买 nike

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

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

最佳答案

C++/CLI language specification (p. 50) 说:

The fundamental types map to corresponding value class types provided by the implementation, as follows:

  • signed char maps to System::SByte.
  • unsigned char maps to System::Byte.
  • If a plain char is signed, char maps to System::SByte; otherwise, it maps to System::Byte.
  • For all other fundamental types, the mapping is implementation-defined [emphasis mine].


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

然而,在实践中,.NET 不在 16 位系统上运行,因此您可以安全地假设 32 位 int s。

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

关于.net - int 和 System::Int32 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6093239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com