2011-03-23 53 views
7

因此,IEnumerable使用IComparable接口來評估對.Min()的調用。我無法找到可空類型是否支持這一點。假設我有一個int?的列表,{null,1,2}。請問.Min()工作?IEnumerable.Min如何處理Nullable類型?

+1

爲什麼不輸入它來查找。但首先要認同結果應該是什麼。 – 2011-03-23 22:47:25

+1

您正在尋找:http://msdn.microsoft.com/en-us/library/bb341201.aspx – BoltClock 2011-03-23 22:48:35

+0

您也可能會發現這一點:http://msmvps.com/blogs/jon_skeet/archive/2011 /01/09/reimplementing-linq-to-objects-part-29-min-max.aspx – LukeH 2011-03-23 22:53:22

回答

12

是的,它的工作原理。

null既不大於也不小於任何非空值 - 至少對於內置類型而言。因此,除非所有值均爲null,否則在計算MinMax時,空值將被有效忽略。

0

空值被忽略:

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

打印1

8

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()); 
    } 
} 

輸出1。然而如果該列表是empty, or contains only null,輸出是null

因此null計爲爲Min