Question

Comme je suis en train d'écrire des applications à l'aide de C++ .NET framework, je veux poser une question.

Quand je suis à l'écriture de code exactement pour "boucle" j'ai toujours utiliser ce style de codage:

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

mais comme je suis à l'aide de C++ .NET je peux écrire

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

Je pense qu'il y a pas de différence, ai-je le droit ?Si non pouvez-vous expliquer quelle est la différence entre ces deux façons et.la sorcière est plus efficace ?

Était-ce utile?

La solution

La seule différence est probablement à être plus explicite sur la gamme de valeurs prises en charge par int et System::Int32.

System::Int32 fait le 32 bits plus explicite pour ceux qui lisent le code.On devrait utiliser int où il y a juste besoin d'une 'integer', et l'utilisation System::Int32 où la taille est importante (code de chiffrement, structures), de sorte que les lecteurs sont claires, tout en conservant les mêmes.

À l'aide de int ou System::Int32le code résultant sera identique:la différence est purement explicite de lisibilité de code ou de l'apparence.

Autres conseils

L' C++/CLI langage de spécification (p.50) affirme que:

Les types fondamentaux de carte de valeur correspondante de la classe de types la mise en œuvre, comme suit:

  • signed char cartes à System::SByte.
  • unsigned char cartes à System::Byte.
  • Si une plaine char est signé, char cartes à System::SByte;sinon, il cartes à System::Byte.
  • Pour tous les autres types fondamentaux, la cartographie est la mise en œuvre définies par l' [c'est moi qui souligne].

Cette diffère à partir de C#, dans lequel int il est expressément défini comme un alias pour System.Int32.En C++/CLI, comme dans la norme ISO C++, un int a "la taille naturelle suggéré par l'architecture de l'environnement d'exécution", et est seulement la garantie d'avoir au moins 16 bits.

Dans la pratique, cependant, .NET ne fonctionne pas sur les systèmes 16 bits, de sorte que vous pouvez supposer 32 bits ints.

Mais être prudent avec long:Visual C++ définit comme 32 bits, ce qui est pas de la même comme un C# de long.Le C++ équivalent de System::Int64 est long long.

non.L'un d'entre eux n'est qu'un alias pour l'autre.

int en C# est le même que System.Int32 de .Net.

Apparemment, à la différence de C et régulière, C++, C# et C++/CLI ont un int le type qui est toujours en 32 bits.

Ceci est confirmé par MSDN, donc la réponse est qu'il n'y a pas de différence entre les deux, autre que le fait que int il est considérablement plus rapide à taper que System::int32.

Les deux, int et int32, sont en effet synonymes; int sera un peu plus familiers de la recherche, Int32 fait le 32 bits plus explicite pour ceux qui lisent votre code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top