none
Comparar cadenas RRS feed

  • Pregunta

  • Tengo el  siguiente codigo,  es para un juego:

    según Turno1,  le asigno una valor  al  array tipo  string ("turno1"  ó  " turno2")

    if (Turno1 == true)
                    {
                        PosTap[fil, col] = "Turno1";
                    }
                    else {
                        PosTap[fil, col] = "Turno2";
                    }

    // Pero lo  que quiero  es saber que valor contiene en este punto  el  array  PosTap[fil, col] 

    // lo  he intentado  así pero  me da error: (NullReferenceException)

                 if ((PosTap[fil, col]) == "Turno1")
                {

                //haga algo

                }

               

                if ((PosTap[fil, col]) == "Turno2")
                {

                //haga algo

                }                   

                if ((PosTap[fil, col]) == "")//ningun valor
                {

                //haga algo

               }

    alguien me puede dar una mano  con esto

    Gracias...


    • Editado YeisonSoto domingo, 22 de abril de 2012 23:04
    domingo, 22 de abril de 2012 23:03

Respuestas

  • No entiendo mucho el codigo:

    if (Turno1 == true) // Aqui el valor de Turno es booleano
                    {
                        PosTap[fil, col] = "Turno1"; // Aqui el valor de Turno es string
                    }

    Ademas para interactual en los elemento de una matriz de multiple dimensiones debera hacerlo mas o menos de esta forma

    // matriz 5X4, 5 filas X 4 columnas
                int[,] ma = new int[5, 4]{{1,2,3,4}, {8,9,19,11}, {22,23,24,25}, {50,51,52,53}, {106,107,108,109}};
                string[,] ma2 = new string[5, 4] { { "a", "b", "c", "d" }, { "z", "y", "x", "w" }, { "e", "f", "g", "h" }, { "v", "u", "t", "s" }, { "i", "j", "k", "l" } };
    
                // procesar filas
                for (int fila = ma.GetLowerBound(0); fila < ma.GetUpperBound(0); fila++)
                {
                    // procesar columnas
                    for (int columna = ma.GetLowerBound(1); columna < ma.GetUpperBound(1); columna++)
                    {
                        label1.Text += "\n" + ma[fila,columna].ToString();
                    }
                }

    Segun el comentario de la documentacion de microsoft Array.GetLowerBound (Método)

    GetLowerBound(0) returns the lower bound for the indexes of the first dimension of the Array, and GetLowerBound(Rank - 1) returns the lower bound of the last dimension of the Array." id="mt7">GetLowerBound(0) devuelve el límite inferior para los índices de la primera dimensión de la matriz Array y GetLowerBound(Rank - 1) devuelve el límite inferior de la última dimensión de la matriz Array.

    GetLowerBound method is not affected by the number of elements in the array or if the array is empty." id="mt8">El número de elementos no afecta al método GetLowerBound de la matriz o si la matriz está vacía.

    Este método es una operación O(1).

    Array.GetUpperBound (Método)


    Angel R. Jimenez G.
    Software Development
    Santo Domingo
    Republica Dominicana
    Blog

    lunes, 23 de abril de 2012 3:16

Todas las respuestas

  • hola

    pero el error NullReferenceException no tiene nada que ver con al forma en como comparas las cadenas

    esta relacionado con que quieres acceder a un objeto no instanciado

    estas seguro que accedes a una posicion valida dentro del array cuando se produce este error?


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 22 de abril de 2012 23:48
  • No entiendo mucho el codigo:

    if (Turno1 == true) // Aqui el valor de Turno es booleano
                    {
                        PosTap[fil, col] = "Turno1"; // Aqui el valor de Turno es string
                    }

    Ademas para interactual en los elemento de una matriz de multiple dimensiones debera hacerlo mas o menos de esta forma

    // matriz 5X4, 5 filas X 4 columnas
                int[,] ma = new int[5, 4]{{1,2,3,4}, {8,9,19,11}, {22,23,24,25}, {50,51,52,53}, {106,107,108,109}};
                string[,] ma2 = new string[5, 4] { { "a", "b", "c", "d" }, { "z", "y", "x", "w" }, { "e", "f", "g", "h" }, { "v", "u", "t", "s" }, { "i", "j", "k", "l" } };
    
                // procesar filas
                for (int fila = ma.GetLowerBound(0); fila < ma.GetUpperBound(0); fila++)
                {
                    // procesar columnas
                    for (int columna = ma.GetLowerBound(1); columna < ma.GetUpperBound(1); columna++)
                    {
                        label1.Text += "\n" + ma[fila,columna].ToString();
                    }
                }

    Segun el comentario de la documentacion de microsoft Array.GetLowerBound (Método)

    GetLowerBound(0) returns the lower bound for the indexes of the first dimension of the Array, and GetLowerBound(Rank - 1) returns the lower bound of the last dimension of the Array." id="mt7">GetLowerBound(0) devuelve el límite inferior para los índices de la primera dimensión de la matriz Array y GetLowerBound(Rank - 1) devuelve el límite inferior de la última dimensión de la matriz Array.

    GetLowerBound method is not affected by the number of elements in the array or if the array is empty." id="mt8">El número de elementos no afecta al método GetLowerBound de la matriz o si la matriz está vacía.

    Este método es una operación O(1).

    Array.GetUpperBound (Método)


    Angel R. Jimenez G.
    Software Development
    Santo Domingo
    Republica Dominicana
    Blog

    lunes, 23 de abril de 2012 3:16
  • Ten presente que los arrays en C# están indexados en base-0, lo que significa que si un array tiene 10 elementos las posiciones que ocupan son de 0 a 9 y no de 1 a 10.

    Atentamente, Sergio.

    Blog
    Twitter

    lunes, 23 de abril de 2012 12:41