foreach (string s in myField.getChilds()) {
    if (s == null)
        //handle null
    else
        //handle normal value 
}

Cuando ejecuto mi programa me sale una excepción NullReferenceException porque getChilds puede devolver null. ¿Cómo puedo hacer que mi programa para continuar de todos modos y manejar la excepción? Yo no puede manejar fuera del foreach, no puede explicar por qué porque va a tomar demasiado tiempo (y estoy seguro de que los chicos están ocupados :P). Alguna idea?

Ya he probado de esa manera:

foreach (string s in myField.getChilds() ?? new ArrayList(1)) {
        if (s == null)
            //handle null
        else
            //handle normal value 
    }

Pero no funciona, el programa acaba de saltar al final de la foreach, pero quiero entrar en el foreach lugar!

No entiendo tu comentario acerca de la nula creación de operador: «no funciona, el programa acaba de saltar al final de la foreach, pero quiero entrar en el foreach en su lugar!». Es posible porque no está dando una cadena que es simplemente saltar. Usted tiene que dar un valor que se puede asignar a s.

OriginalEl autor raz3r | 2010-12-20

3 Comentarios

  1. 11

    Una forma de hacerlo (aunque no de la mejor manera) es:

    foreach (string s in myField.getChilds() ?? new string[] { null })

    o

    foreach (string s in myField.getChilds() ?? new ArrayList { null })

    La razón new ArrayList(1) no funciona es que se crea una lista que tiene el capacidad tener 1 elemento, pero todavía está vacío. Sin embargo new string[] { null } crea una matriz de cadena con un único elemento que es simplemente nulo, que es lo que parecen querer.

    No veo ninguna indicación de que el OP quiere realmente ir en el bucle si el valor devuelto es null… he asumido que él quiere tratar a null en la misma manera como una colección vacía.
    Jon: Cuando el OP dice «el programa de acaba de saltar en el final de la foreach, pero quiero entrar en el foreach en su lugar!» Yo tomo esto como una indicación de que él quiere un null colección para ser tratados como un solo elemento de la colección que contiene null.
    ¡Vaya, estás absolutamente en lo cierto. No había visto eso. +1, y eliminar mi respuesta 🙂
    Que funcionó! Yo debería haber pensó acerca de eso, gracias chicos tanto, a todos ustedes. Lo siento si soy noob 🙁

    OriginalEl autor Gabe

  2. 2
    var children = myField.getChilds();
    if (children == null)
    {
        //Handle the null case
    }
    else
    {
        foreach (string s in children)
        {
    
        }
    }

    o simplemente utilizar el null coalescente de operador:

    foreach (string s in myField.getChilds() ?? Enumerable.Empty<string>())
    {
    
    }
    Como ya he dicho que no puede manejar fuera de ella, debe ser hecho en el foreach. De lo contrario me habría hecho en esa forma 😛 soy noob pero no estúpido LOL. De todos modos he probado tu sugerencia, pero he tenido que añadir un fundido desde getChilds() devuelve un ArrayList. Así que he modificado así: string s (string[])fuente.getChilds().ToArray() ?? Enumerable.Vacío<cadena> (), pero de nuevo, NullReferenceException 🙁
    ArrayList??? Por favor, no. El uso inflexible de las colecciones. También está seguro de que no es el myField variable es null?
    Parece que soy un idiota en su lugar, porque trato de llamar al método ToArray() método en un objeto nulo. Por supuesto puedo obtener NullReferenceException de todos modos xD además de que puedo dar a probar con una colección, pero luego si puedo implementar una Interfaz que debe anular todas Conde, GetEnumerator etc. Estoy equivocado? ¿Qué tipo usted sugiere? myField no es absolutamente nulo porque yo lo uso antes y me ha depurado la aplicación no te preocupes.
    Realmente explicar por qué no se puede «manejar esta fuera del foreach» – es una respuesta natural, y un antinatural restricción.
    No tiene ningún sentido que usted debe manejar las cosas dentro de un bucle si la colección de bucle está vacío o nulo. no Hay nada para proceso

    OriginalEl autor Darin Dimitrov

  3. 2

    si es el myField.getChilds (), el cual puede contener null

    de

    foreach (string s in myField.getChilds()) {
    if (string.IsNullOrEmpty(s))
        //handle null
    else
        //handle normal value 

    }

    de esta manera ,usted puede handel nulo o vacío cadenas.

    OriginalEl autor TalentTuner

Dejar respuesta

Please enter your comment!
Please enter your name here