2017-02-15 71 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