2010-05-06 17 views
9

O SumNeden IEnumerable için bir Sum() uzantısı vardır <uint>

var s = new int[] { 1, 2, 3 }; 
s.Sum(); //works fine 

var us = new uint[] { 1, 2, 3 }; 
us.Sum(); //missing method 

Ben öğrenmek istiyorum (bu konuda ve diğer işaretsiz tamsayılar) IEnumerable<uint> için tanımlı değil gibi görünüyor:

  • Temel olarak yanlış bir şey mi yaptım/durumu yanlış anlamış mıyım?
  • Hangi tasarım kararları IEnumerable<uint>.Sum() eksikliğine neden olabilir?

MSDN: Enumerable.Sum

+0

Her zaman kendiniz yapabilirsiniz ... – Kyte

+0

Açık olan için teşekkürler. ;) – dss539

+1

Tüm özellikler -100'den başlıyor: http://blogs.msdn.com/ericgu/archive/2004/01/12/57985.aspx – Trillian

cevap

0

Sadece bir dikkatsizlik olabilir. IEnumerable listelerinde bulunmayan ForEach numaralı telefonu hatırlatıyorum. En az 3 projede IEnumerable için bir uzantısı yöntemi olarak .ForEach yazdım.

+5

... "ForEach" ın bir gözetim olmadığı hariç. Bu işlevler işlevsel olması gerektiği anlamına geldiği için 'IEnumerable' uzantı yöntemlerine kasten dahil edilmemiştir ve 'ForEach' temelde işlevsel değildir. Bu, ** kelimesinin IList'te bir uzantı yöntemi olması gerektiğini; bakın [burada] (https://connect.microsoft.com/VisualStudio/feedback/details/552410/move-lots-of-helpful-methods-from-list-to-ilist-using-extension-methods) (ve devam !). –

+0

Bitti, kafalar için teşekkürler! – mwilson

6

Sadece bir tahmin: Çünkü uint CLS uyumlu değil. Bunu desteklememe kararlarında bunun ağır olup olmayacağından emin değil.

+1

Evet, bunu yapardı. Bakınız [burada] (http://stackoverflow.com/questions/6325/why-are-unsigned-ints-not-cls-compliant) –

+0

+1 İyi tahmin, ama kesin değil. – dss539

İlgili konular