2017-02-15 88 views
-1

我正在一個錯誤陣列平均法錯誤

錯誤CS1929「UINT []」不包含「平均」和 最好擴展方法重載 「Queryable.Average(IQueryable的)」的定義需要類型 '的IQueryable' ArrayLengthTest d的接收器:\的Visual Studio的 \ ArrayLengthTest \ ArrayLengthTest \ Program.cs的17活動

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

任何想法我做意思是?我知道,我可以輕鬆地使用整數,但我要求的uint ...

+2

這意味着有作爲UINT平均()[]沒有這樣的方法。 –

+0

您可以[查看文檔](https://msdn.microsoft.com/en-us/library/bb358602(v = vs.110).aspx)。 'uint []'沒有'Average()'函數。 –

+0

@DrewKennedy以及它爲什麼沒有?我的意思是,如果你需要它...... ofc的結果將近似,因爲平均回報雙重型......但仍然? – pesho

回答

0

您可以使用

using System.Linq; 

或看到這個帖子how-can-i-return-the-sum-average-of-an-int-array

UPDATE [使用REFL]你可以嘗試實現自定義Avarage擴展 [這是一個森普爾主意]

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

這個問題似乎是關於爲什麼沒有一個版本的平均'特別處理'uint'的Linq。 – juharr

+0

對不起,我的錯誤建議。 – andmattia