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 ?

¿Fue útil?

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::Int32el 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 para System::SByte.
  • unsigned char mapas para System::Byte.
  • Si una llanura char está firmado, char mapas para System::SByte;de lo contrario, mapas para System::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 ints.

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top