por ejemplo, cuando escribí:

Char[] test = new Char[3] {a,b,c};
test[2] = null;

dice No se puede convertir null a ‘char’, porque no es un valor que aceptan valores null tipo

si necesito vaciar la matriz de char, ¿hay una solución?

6 Comentarios

  1. 9

    Uso que acepta valores null char:

    char?[] test = new char?[3] {a,b,c};
    test[2] = null;

    La desventaja es que usted tiene que comprobar un valor cada vez que se el acceso la matriz:

    char c = test[1];  //illegal
    
    if(test[1].HasValue)
    {
        char c = test[1].Value;
    }

    o usted puede utilizar un «magia» char valor para representar null, como \0:

    char[] test = new char[3] {a,b,c};
    test[2] = '
    char[] test = new char[3] {a,b,c};
    test[2] = '\0';
    '
    ;
    • Sólo una sugerencia podría ser la utilización de default(char) para la «magia» de valor. En mi humilde opinión, proporciona un similar modelo mental para considerar el valor «no» o «no especificado.»
    • Justo lo suficiente – el uso de \0 como null es un vestigio de mi C++ días 🙂
    • Nada de malo con eso… Que son lo mismo en este caso, después de todo.
    • que ‘\0’ funciona a la perfección. Lo siento, no tenemos que ignorar los 2 primeros paquetes de códigos de arriba porque estoy buscando la más simple. Gracias compañero!
  2. 3

    Que no se puede hacer porque, como el error dice: char es un tipo de valor.

    Usted podría hacer esto:

    char?[] test = new char?[3]{a,b,c};
    test[2] = null;

    debido a que usted está usando ahora el que acepta valores null char.

    Si usted no desea utilizar un tipo que acepta valores null, usted tendrá que decidir sobre algún valor para representar una celda vacía en su matriz.

  3. 2

    Usted podría hacer:

    test[2] = Char.MinValue;

    Si había pruebas para ver si un valor «null» en alguna parte de tu código, te gustaría hacer algo como esto:

    if (test[someArrayIndex] == Char.MinValue)
    {
       //Do stuff.
    }

    También, Char.MinValue == default(char)

  4. 2

    Como los estados de error, char es que no aceptan valores null. Trate de usar default lugar:

    test[2] = default(char);

    Tenga en cuenta que este es esencialmente un byte null ‘\0‘. Esto no le da a usted una null valor para el índice. Si usted realmente necesita para considerar un null escenario, las otras respuestas aquí sería mejor trabajar (el uso de un tipo que acepta valores null).

    • default(char) da el carácter null. ¿Por qué no hacerlo explícito y decir test[2] = '\0';? Yo recomiendo que (si desea utilizar este personaje como una especie de «magia valor»).
    • Sólo por coherencia… yo uso default en muchos casos en los que el tipo no sabe por adelantado (es decir, los genéricos o de reflexión). Me ayuda a mantener constante de un modelo mental que default => «no especificado» o «no.»
  5. 0

    No sé el motivo de tu pregunta, pero si en lugar de utilizar List<>, se podría decir

    List<char> test = new List<char> { a, b, c, };
    test.RemoveAt(2);

    Esto cambia la longitud (Count) de la List<>.

Dejar respuesta

Please enter your comment!
Please enter your name here