0

introducir la descripción de la imagen aquíEstoy haciendo un codigo de practica (se que se puede pulir y no haria ni falta el for con switch), el problema es que como lo mostrare a continuacion (Con codigo de otros calculos que no incluyo) me lanza una excepcion del tipo System.NullReferenceException y no entiendo porque me guarda el primer dato y el segundo no. Tambien modifique el codigo para ver como continuaba, y en el for del 3er caso del case, me coloca el indice 4 y me lanza OutOfRangeException.

private string[,] Totales = new string[2, 4]; //Arreglo

public string[,] GS_Totales { get; set; } //propiedad

        public void CalcularResultados()
        {
            int Acumulador = 0;

            for (int j = 0; j < Totales.LongLength; j++)
            {
                switch (j)
                {
                    case 0:
                        {
                            GS_Totales[0, 0] = "Medallas por victorias";

                            GS_Totales[1, 0] = Convert.ToString(GS_Victorias * GS_MedallasPorVictorias); 
//LANZA EXEPCION ACA Y SEGURAMENTE EN LAS PARTES SIGUIENTES SI PUDIERA CONTINUAR
                            break;
                        }
                    case 1:
                        {
                            GS_Totales[0, 1] = "Medallas por estrellas obtenidas";

                            GS_Totales[1, 1] = Convert.ToString(GS_TotalEstrellas * GS_MedallasPorEstrellas);
                            break;
                        }
                    case 2:
                        {
                            GS_Totales[0, 2] = "Medallas por bonus que otorga el lider (opcional de conseguir)";

                            if (GS_Bonus)
                            {
                                GS_Totales[1, 2] = Convert.ToString(GS_MedallasPorBonus);
                            }
                            else
                            {
                                GS_Totales[1, 3] = "0";
                            }

                            break;
                        }
                    case 3:
                        {
                            GS_Totales[0, 3] = "Total Obtenido";

                            for (int i = 0; i < Totales.LongLength; i++)
                            {
                                Acumulador += Convert.ToInt32(GS_Totales[1, i]);
//SE POSICIONA EN LA COLUMNA 4
                            }

                            GS_Totales[1, j] = Convert.ToString(Acumulador);
                            break;
                        }
                }
            }
Orion
  • 359
  • 2
  • 15
  • Pero supuestemente se quedan inicializados en 0, y me dice que es null, no se como rellenarlo porque me da error si hago un for que recorra para inicializar – Orion Feb 25 '19 at 18:58
  • que cosa te da error? ese es el error que deberiamos estar viendo – gbianchi Feb 25 '19 at 18:59
  • Osea, en el case 0, el mensaje para titulo "Medallas por victoria" me lo guarda, pero el segundo ya me dice que no existe (lo calculo, convierto y guardo), y en el for del case 3 se me va al indice 4 cuando deberia ser de 0 a 3 para los 4 valores, adicione una foto de lo primero, si lo guardo directamente sin usar la porpiedad, no me lanza la excepcion. – Orion Feb 25 '19 at 19:02
  • public string[,] GS_Totales no tiene ningun tamaño.. como sabe cuanto va a guardar ahi? – gbianchi Feb 25 '19 at 19:07
  • Ah, y como se instanciaria en la propiedad? es eso que no se hacer en propiedades y ya me deja continuar – Orion Feb 25 '19 at 19:11
  • Exactamente igual a como hiciste con Totales: public string[,] GS_Totales { get; set; } = new string[2, 2]; – gbianchi Feb 25 '19 at 19:15
  • Funciono! sos un genio, gracias!, habia visto en otro lado que era como de otra forma mas rara (un indexer con una clase, que no se bien como seria en arreglo bidimencional): public CAuto this[int indice] { get { return Disponibles[indice]; } set { Disponibles[indice] = value; } } – Orion Feb 25 '19 at 19:19
  • Es que segun el modelo, podes pasarle los datos directamente ahi, si los sabes. – gbianchi Feb 25 '19 at 19:19
  • claro.. pero esa es otra propiedad, no la que definiste vos. en la que definiste vos, se va a traer y guardar todo el array junto. no podes entrar por indice via el get y set – gbianchi Feb 25 '19 at 19:20

0 Answers0