none
redimencionar matriz de vb 6 a c# RRS feed

  • Pregunta

  • Hola si alguien me pudiera auxiliar en la siguiente:

    Estoy pasando codigo de vb a c# y me tope con una redimensión de matriz bidimencional, no se si alguien pudiera orientarme

    




    jueves, 30 de noviembre de 2017 5:06

Respuestas

Todas las respuestas

  • A diferencia de Visual Basic, en el lenguaje c# el número de dimensiones -y la longitud por cada dimensión- se definen a penas se crea una nueva instancia, posterior a ello los valores no pueden ser modificados. Sin embargo, siendo que intentas reescribir el código a un lenguaje moderno, ¿por qué no aprovechas las ventajas de las listas?, además de permitir el tipado -según los valores que contienes- te permite agregar, modificar o quitar elementos de una manera simple, por ejemplo: 

    //Crear la clase Producto
    public class Producto
    {
    	public int idProducto { get; set; }
    	public int cantidad { get; set; }
    }
    
    //Declarar e instanciar una lista de tipo Producto
    var productos = new List<Producto>();
    
    //Agregar elementos a la lista o actualizar.
    var _producto = productos.FirstOrDefault(x => x.idProducto == liProdID);
    
    if (_producto != null)
    	_producto.cantidad += liCantidad;
    else
    	productos.Add(new Producto() { idProducto = liProdID, cantidad = liCantidad });

    jueves, 30 de noviembre de 2017 6:06
  • hola

    Si bien lo aconsejable seria pasar los array a List<>, puede que para una primer migracion deba cambiarse bastante codigo, en ese caso podrias evaluar

    Array.Resize

    quizas con esto puedas redimensionas un array

    saludos

    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 30 de noviembre de 2017 13:34
  • Hola a todos, navegando por la web encontré el método adecuado para así poder re dimensionar mi matriz bidimensional: les comparto el link,


    https://stackoverflow.com/questions/6539571/how-to-resize-multidimensional-2d-array-in-c

    Por si les funciona, de esta manera sacas la longitud de la dimensión

     int di= OCTelcel.GetLength(1); 

    jueves, 30 de noviembre de 2017 18:58
  • ...encontré el método adecuado para así poder re-dimensionar mi matriz bidimensional 

    Reitero, las dimensiones del array, así como la longitud de cada dimensión, no pueden ser modificadas posterior a haber sido definidas, la solución que mencionas no redimensiona el array (de hecho no se si la instrucción REDIM de Visual Basic lo haga en el sentido estricto del nombre), nota que se crea un nuevo array con la nueva definición de dimensiones y longitud, se transfiere los datos -del array "original" al "nuevo"- y es el "nuevo array" el que retorna el método, lo mismo conseguirás con el método Resize, de la clase Array, que menciona Leandro. Si de verdad buscas algo dinámico, has uso de listas, no veo sentido migrar código manteniendo líneas que podrían ser escritas de mejor manera.

    jueves, 30 de noviembre de 2017 19:24
  • >> has uso de listas, no veo sentido migrar código manteniendo líneas que podrían ser escritas de mejor manera.

    Tienes razón junto a Leandro, al final ocupe listas, dejo una imagen de como lo solucione, gracias

    y al final me tarde menos tiempo que cuando hice el otro de matriz

    jueves, 30 de noviembre de 2017 20:07