2011-03-23 16 views
7

Por lo tanto, IEnumerable usa la interfaz IComparable para evaluar una llamada a .Min(). Tengo problemas para encontrar si los tipos que aceptan nulo admiten esto. Suponiendo que tengo una lista de int ?, {null, 1, 2}. ¿Funcionará .Min()?¿Cómo maneja IEnumerable .Min los tipos anulables?

+1

¿Por qué no escribirlo para averiguarlo? Pero primero acuerde con usted mismo cuál debería ser el resultado. –

+1

Usted está buscando esto: http://msdn.microsoft.com/en-us/library/bb341201.aspx – BoltClock

+0

Puede encontrar esto interesante también: http://msmvps.com/blogs/jon_skeet/archive/2011 /01/09/reimplementing-linq-to-objects-part-29-min-max.aspx – LukeH

Respuesta

12

Sí, funciona.

El valor null no es ni mayor que ni menos que cualquier valor no nulo - al menos por el construido en tipos. Por lo tanto, los valores nulos se ignorarán efectivamente en el cálculo Min o Max a menos que todos los valores sean null.

0

Los valores nulos se ignoran:

static void Main() 
{ 
    var values = new int?[] { null, 1, 2 }; 
    Console.WriteLine(values.Min()); 
} 

impresiones 1.

8

Los following program

using System; 
using System.Collections.Generic; 
using System.Linq; 

public class Test 
{ 
    public static void Main() 
    { 
     List<int?> l = new List<int?>() {1, null, 2}; 
     Console.WriteLine(l.Min()); 
    } 
} 

salidas 1. Si la lista es sin embargo empty, or contains only null, la salida es null.

Así null cuenta como el más grande int para Min.

Cuestiones relacionadas