Diferencia entre int y Sistema de::Int32
Pregunta
Como estoy escribiendo aplicaciones con C++ .NET framework quiero hacer una pregunta.
Cuando estoy escribiendo el código exactamente "for loop" yo siempre uso este estilo de codificación:
for( int i=0; i<somevalue; ++i ) {
// Some code goes here.
}
pero como estoy usando C++ .NETA me puede escribir
for( System::Int32 i=0; i<somevalue; ++i ) {
// Some code goes here.
}
Creo que no hay diferencia yo Estoy en lo correcto ?Si no puede usted explicar cuál es la diferencia entre estas dos maneras y.la bruja es más eficaz ?
Solución
La única diferencia es, probablemente, ser explícito acerca de la gama de valores respaldados por la int
y System::Int32
.
System::Int32
hace que el de 32 bits más explícita a los que lean el código.Uno debe usar int
donde sólo hay necesidad de 'entero', y el uso de System::Int32
donde el tamaño es importante (código criptográfico, estructuras) de manera que los lectores serán claras de ella, mientras que el mantenimiento de la misma.
El uso de int
o System::Int32
el código resultante será el mismo:la diferencia es puramente una explícito de mejorar la legibilidad de código o de apariencia.
Otros consejos
El C++/CLI especificación del lenguaje (p.50) dice que:
Los tipos fundamentales mapa valor correspondiente a la clase de tipos proporcionados por la aplicación, como de la siguiente manera:
signed char
mapas paraSystem::SByte
.unsigned char
mapas paraSystem::Byte
.- Si una llanura
char
está firmado,char
mapas paraSystem::SByte
;de lo contrario, mapas paraSystem::Byte
.- Para todos los otros tipos fundamentales, la asignación es la aplicación definida por el [énfasis mío].
Este difiere desde C#, en el que int
se define específicamente como un alias para System.Int32
.En C++/CLI, como en ISO C++, un int
tiene "el tamaño natural sugerido por la arquitectura del entorno de ejecución", y sólo se garantiza que tiene al menos 16 bits.
En la práctica, sin embargo, .NETA no se ejecuta en sistemas de 16 bits, por lo que podemos asumir con seguridad que de 32 bits int
s.
Pero tenga cuidado con long
:Visual C++ define como de 32 bits, que es no el mismo que el de un C# de largo.El equivalente de C++ de System::Int64
es long long
.
no.Uno de ellos es solo un alias para el otro.
int
en C # es el mismo que System.Int32
de .NET.
Al parecer, a diferencia de C y regular C++, C# y C++/CLI tiene un int
el tipo que siempre es de 32 bits de longitud.
Esto es confirmado por MSDN, así que la respuesta es que no hay ninguna diferencia entre los dos, aparte del hecho de que int
es considerablemente más rápido que el tipo de System::int32
.
Los dos, int
y int32
, son en realidad sinónimos; int
va a ser un poco más familiar buscando, Int32
hace que el de 32 bits más explícita a los de la lectura de su código.