3

C ++ .NET Frameworkを使用してアプリケーションを作成しているので、質問したいと思います。

「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.
}

違いはないと思いますよね?いいえの場合、この2つの方法との違いを説明できません。魔女の方が効果的ですか?

4

6 に答える 6

4

C ++ / CLI言語仕様(p。50)には、次のように書かれています。

基本型は、次のように、実装によって提供される対応する値クラス型にマップされます。

  • signed charにマップしSystem::SByteます。
  • unsigned charにマップしSystem::Byteます。
  • 平野charが署名されている場合は、 ;にcharマップされます。System::SByteそれ以外の場合は、にマップされSystem::Byteます。
  • 他のすべての基本タイプの場合、マッピングは実装定義です[強調鉱山]。

これは、のエイリアスとして具体的に定義されているC#とは異なります。C ++ / CLIでは、ISO C ++と同様に、は「実行環境のアーキテクチャによって提案される自然なサイズ」であり、少なくとも16ビットであることが保証されています。intSystem.Int32int

ただし、実際には、.NETは16ビットシステムでは実行されないため、32ビットを安全に想定できますint

ただし、次の点に注意してlongください。Visual C ++では32ビットとして定義されていますが、これはC#の長さと同じではありません。に相当するC++System::Int64はですlong long

于 2011-05-23T06:25:38.190 に答える
2

int唯一の違いは、おそらくとでサポートされる値の範囲について明示的であることですSystem::Int32

System::Int3232ビットネスをコードを読んでいる人にとってより明確にします。int'整数'が必要な場合は使用しSystem::Int32、サイズが重要な場合(暗号化コード、構造)を使用して、読者が同じ整数を維持しながらそれを明確にする必要があります。

使用するコードintまたはSystem::Int32結果のコードは同じになります。違いは、純粋に明示的な可読性またはコードの外観の1つです。

于 2011-05-23T05:41:08.840 に答える
1

いいえ。一方はもう一方のエイリアスにすぎません。

于 2011-05-23T05:43:40.593 に答える
1

intSystem.Int32C#では.Netと同じです。

于 2011-05-23T05:44:46.103 に答える
1

どうやら、Cや通常のC ++とは異なり、C#とC ++/CLIのint型は常に32ビット長です。

これはMSDNによって確認されているので、答えは、int入力が。よりもかなり速いという事実を除いて、2つの間に違いはないということですSystem::int32

于 2011-05-23T05:46:13.737 に答える
0

2つと、intint32確かに同義語です。int見た目がもう少し見慣れInt32たものになり、コードを読んでいる人にとって32ビットがより明確になります。

于 2012-09-01T05:01:54.783 に答える