Frage

Da ich Anwendungen mit dem C++ .NET Framework schreibe, möchte ich eine Frage stellen.

Wenn ich Code genau für die „for-Schleife“ schreibe, verwende ich immer diesen Codierungsstil:

for( int i=0; i<somevalue; ++i ) {
    // Some code goes here.
}

aber da ich C++ .NET verwende, kann ich schreiben

for( System::Int32 i=0; i<somevalue; ++i ) {
    // Some code goes here.
}

Ich denke, es gibt keinen Unterschied. Habe ich recht?Wenn nein, können Sie erklären, was der Unterschied zwischen diesen beiden Möglichkeiten ist?Welches ist effektiver?

War es hilfreich?

Lösung

Der einzige Unterschied besteht wahrscheinlich darin, dass der Bereich der unterstützten Werte explizit angegeben wird int Und System::Int32.

System::Int32 macht die 32-Bit-Version für diejenigen, die den Code lesen, deutlicher.Man sollte verwenden int wo nur eine Ganzzahl und deren Verwendung erforderlich sind System::Int32 wobei die Größe wichtig ist (kryptografischer Code, Strukturen), damit die Leser sie nicht bemerken, aber die gleiche Größe beibehalten.

Benutzen int oder System::Int32Der resultierende Code wird identisch sein:Der Unterschied besteht lediglich in der expliziten Lesbarkeit oder dem Erscheinungsbild des Codes.

Andere Tipps

Der C++/CLI-Sprachspezifikation (P.50) sagt:

Die grundlegenden Typen sind auf entsprechende Wertklassentypen zugeordnet, die durch die Implementierung bereitgestellt werden, wie folgt:

  • signed char Karten zu System::SByte.
  • unsigned char Karten zu System::Byte.
  • Wenn eine Ebene char ist unterschrieben, char Karten zu System::SByte;ansonsten kartiert es zu System::Byte.
  • Für alle anderen Grundtypen gilt die Zuordnung durch die Implementierung definiert [Hervorhebung von mir].

Das unterscheidet sich von C#, in dem int ist speziell als Alias ​​für definiert System.Int32.In C++/CLI, wie auch in ISO C++, ein int hat „die natürliche Größe, die von der Architektur der Ausführungsumgebung vorgeschlagen wird“ und es wird nur garantiert, dass sie mindestens 16 Bit hat.

In der Praxis, Allerdings läuft .NET nicht auf 16-Bit-Systemen, Sie können also getrost von 32-Bit ausgehen intS.

Aber seien Sie vorsichtig mit long:Visual C++ definiert es als 32-Bit nicht das gleiche wie ein C# long.Das C++-Äquivalent von System::Int64 Ist long long.

nein.Einer von ihnen ist nur ein Alias für den anderen.

int in C# ist dasselbe wie System.Int32 von .Net.

Anscheinend haben C# und C++/CLI im Gegensatz zu C und regulärem C++ eine int Typ, der immer 32 Bit lang ist.

Dies wird bestätigt durch MSDN, Die Antwort lautet also, dass es keinen Unterschied zwischen den beiden gibt, außer der Tatsache, dass int Es ist wesentlich schneller zu tippen als System::int32.

Die Zwei, int Und int32, sind in der Tat synonym; int wird etwas vertrauter aussehen, Int32 macht die 32-Bit-Version für diejenigen, die Ihren Code lesen, deutlicher.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top