2011-03-23 18 views
7

Yani, IEnumerable .Min() çağrısını değerlendirmek için IComparable arabirimini kullanır. NULL türlerinin bunu destekleyip desteklemediğini bulmakta zorlanıyorum. Int'in bir listesini aldığımı varsayalım? (Null, 1, 2}). Will .Min() çalışır?IEnumerable .Min NULL türlerini nasıl ele alır?

+1

Niçin öğrenmek için onu yazmayın. Ama önce sonucun ne olması gerektiğine kendiniz karar verin. –

+1

Bunun için arıyorsunuz: http://msdn.microsoft.com/en-us/library/bb341201.aspx – BoltClock

+0

Bunu da ilginç bulabilirsiniz: http://msmvps.com/blogs/jon_skeet/archive/2011 /01/09/reimplementing-linq-to-objects-part-29-min-max.aspx – LukeH

cevap

12

Evet, işe yarıyor.

null değeri, en azından yerleşik türler için sıfır olmayan değerden daha büyük veya daha küçüktür. Bu nedenle, tüm değerler null değilse, null değerleri Min veya Max hesaplamasında etkin bir şekilde yok sayılır.

0

boş değerler göz ardı edilir:

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

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

çıkış 1. liste, ancak empty, or contains only null ise, çıkış null olup.

nullMin için en büyük int olarak sayılır.

İlgili konular