2011-07-31 13 views
7

Tengo una Array<Person> myArray y estoy usando el siguiente códigoArray.Encontrar con delegado. ¿Qué devuelve si no se encuentra?

myArray.Find(o => o.name.Equals("John")); 

Este article en MSDN indica:

Valor de retorno

Tipo: T

El primer elemento que coincide las condiciones definidas por el predicado especificado , si se encuentra; de lo contrario, el valor por defecto para el tipo T.

Si yo tenía un Array<int> el valor por defecto sería cero. Pero, en mi caso, estoy usando una clase. Digamos Array<Person>.

¿Cuál sería el valor predeterminado para mi clase y cómo puedo manejar el caso no encontrado utilizando un delegado?

Respuesta

10

El valor predeterminado para cualquier tipo de referencia (clase, interfaz, delegado) es una referencia nula. El valor predeterminado para cualquier tipo de valor es un valor donde todos los campos del tipo son el valor predeterminado para ese campo, por lo que termina con 0, \0, falso, etc.

Consulte MSDN para obtener más información.

4

Asumiendo que Persona es un tipo de referencia, el valor predeterminado sería nulo.

Por lo tanto, la llamada a Array.Find() devolverá nulo cuando la condición no se cumpla.

Cuestiones relacionadas