none
Diferencia matriz RRS feed

  • Pregunta

  • Hola:

    A mi me parece que esta matriz o array funciona con el mismo resultado. Si hay otras ventajas y desventajas o algo que no se ve a simplemente a la vista, lo pueden comentar.

    ¿En qué se diferencia exacamente estas tres matrices que en realidad hacen los mismo?

    Ejemplo 1:
    Se le añade un new y en su string indica que tiene 8 elementos.

                string[] DESCRIPCION_S6 = new string[8]
                {
                    "Para indicar que este byte está disponible y es válido. [Siempre 1].",
                    "Indica UPS encendido.",
                    "Reservado, debe ser 0.",
                    "Reservado, debe ser 0.",
                    "Reservado, debe ser 0.",
                    "Reservado, debe ser 0.",
                    "Reservado, debe ser 0.",
                    "Reservado, debe ser 0."
                };

    Ejemplo 2:
    Lo mismo que el de arriba pero sin poner 8 o nada en el string.

                string[] DESCRIPCION_S6 = new string[]
                {
                    "Para indicar que este byte está disponible y es válido. [Siempre 1].",
                    "Indica UPS encendido.",
                    "Reservado, debe ser 0.",
                    "Reservado, debe ser 0.",
                    "Reservado, debe ser 0.",
                    "Reservado, debe ser 0.",
                    "Reservado, debe ser 0.",
                    "Reservado, debe ser 0."
                };
    Ejemplo 3:
    Funciona como los dos ejemplos como el de arriba pero no hace falta usar new ni string.
                string[] DESCRIPCION_S6 =
                {
                    "Para indicar que este byte está disponible y es válido. [Siempre 1].",
                    "Indica UPS encendido.",
                    "Reservado, debe ser 0.",
                    "Reservado, debe ser 0.",
                    "Reservado, debe ser 0.",
                    "Reservado, debe ser 0.",
                    "Reservado, debe ser 0.",
                    "Reservado, debe ser 0."
                };


    ¿Es el mismo perro pero de distingo collar?

    Saludos.


    http://electronica-pic.blogspot.com

    martes, 20 de abril de 2021 12:46

Respuestas

  • Los tres ejemplos dan exactamente igual. Aunque tienen diferencias sintácticas, esto es solo "cola sintáctica" para el compilador. Una vez compilado, los tres generan exactamente el mismo código ejecutable.
    • Marcado como respuesta Metaconta miércoles, 21 de abril de 2021 7:44
    miércoles, 21 de abril de 2021 6:36
    Moderador
  • Hay gente que me dice que si pongo el Ejemplo 1, ya se sabe cuanta memoria hay exactamente

    Y en los otros ejemplos también lo sabe. El compilador cuenta el úmero de inicializadores y en base a ello inicializa un array con el número exacto de elementos. En .NET no es factible tener un array sin dimensión fija. SIEMPRE tiene que estar dimensionado. Aunque no pongas el [8] en el código fuente, el compilador lo genera a partir de los inicializadores. El código binario generado es el mismo en todos los casos.

    • Marcado como respuesta Metaconta martes, 4 de mayo de 2021 7:47
    miércoles, 21 de abril de 2021 10:52
    Moderador

Todas las respuestas

  • Hola,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    martes, 20 de abril de 2021 22:52
    Moderador
  • Los tres ejemplos dan exactamente igual. Aunque tienen diferencias sintácticas, esto es solo "cola sintáctica" para el compilador. Una vez compilado, los tres generan exactamente el mismo código ejecutable.
    • Marcado como respuesta Metaconta miércoles, 21 de abril de 2021 7:44
    miércoles, 21 de abril de 2021 6:36
    Moderador
  • Gracias. Por lo que cuentas, no hay diferencias ninguna.

    Hay gente que me dice que si pongo el Ejemplo 1, ya se sabe cuanta memoria hay exactamente y ahorra memoria RAM, aunque el usuario no lo nota.


    http://electronica-pic.blogspot.com

    miércoles, 21 de abril de 2021 7:45
  • Hay gente que me dice que si pongo el Ejemplo 1, ya se sabe cuanta memoria hay exactamente

    Y en los otros ejemplos también lo sabe. El compilador cuenta el úmero de inicializadores y en base a ello inicializa un array con el número exacto de elementos. En .NET no es factible tener un array sin dimensión fija. SIEMPRE tiene que estar dimensionado. Aunque no pongas el [8] en el código fuente, el compilador lo genera a partir de los inicializadores. El código binario generado es el mismo en todos los casos.

    • Marcado como respuesta Metaconta martes, 4 de mayo de 2021 7:47
    miércoles, 21 de abril de 2021 10:52
    Moderador