2017-02-15 3 views
-1

Ich erhalte einen FehlerArray Average Methode Fehler

Fehler CS1929 'uint []' enthält keine Definition für 'Durchschnitt' enthalten und die beste Erweiterung -Methodenüberladung 'Queryable.Average (IQueryable)' erfordert einen Empfänger vom Typ ArrayLengthTest D 'IQueryable': \ Visual Studio \ ArrayLengthTest \ ArrayLengthTest \ Program.cs 17 Aktive

uint[] asd = new uint[5]; 
      for (uint i = 0; i < asd.Length; i++) 
      { 
       asd[i] = i; 
      } 
      uint arrayAverage = asd.Average(); 

Alle Ideen, was ich tut t bedeuten? Ich weiß, dass ich leicht Ints verwenden kann, aber ich für uints bin fragen ...

+2

Es bedeutet, dass es als Durchschnitt() auf uint [] keine solche Methode ist. –

+0

Sie können ein [siehe die Dokumentation] (https://msdn.microsoft.com/en-us/library/bb358602 (v = vs.110) .aspx). 'uint []' hat nicht die Funktion 'Average()'. –

+0

@DrewKennedy und warum es nicht hat? Ich meine, wenn Sie es brauchen ... Ofc wird das Ergebnis ungefähr sein, da Durchschnitt Doppeltyp zurückgibt ... aber immer noch? – pesho

Antwort

0

Sie

verwenden können
using System.Linq; 

oder diesen Beitrag sehen how-can-i-return-the-sum-average-of-an-int-array

UPDATE [mit refl] können Sie versuchen, implementieren Ihre benutzerdefinierte Avarage Erweiterung [dies ist ein semple idea]

public static uint Average(this IEnumerable<uint> source) 
    { 
     if (source == null) throw new Exception(); 
     long sum = 0; 
     long count = 0; 
     checked 
     { 
      foreach (uint v in source) 
      { 
       sum += v; 
       count++; 
      } 
     } 
     if (count > 0) return(uint)((double)sum/count); 
     throw new Exception(); 
    } 
+0

Die Frage scheint zu sein, warum es keine Version von 'Average gibt 'in Linq, die speziell 'Uint' behandelt. – juharr

+0

Entschuldigung für meinen falschen Vorschlag. – andmattia