【问题标题】:(C#) Unable to get the lowest value from an array containing doubles(C#) 无法从包含双精度的数组中获取最小值
【发布时间】:2017-08-26 00:03:00
【问题描述】:

我对 C# 还是很陌生,这是我编码的第二天。 我无法从包含双精度的数组中获取最低值。

例如:

double [] arr = { 5.5 , 6.5 , 8.19 };
double max = (arr.Min);

此代码似乎对我不起作用。

有什么建议吗?

【问题讨论】:

  • double max = arr.Min(); 虽然我不知道如果变量实际上包含最小值,你为什么要调用它max
  • 您需要调用该方法。arr.Min 是委托,arr.Min() 是调用该方法的结果。
  • 使用 Linq 扩展,您可以在 arr 通孔上调用 Min() 以从集合中获取最小值。
  • 哦,我猜我的语法有错误。我现在感觉很愚蠢。
  • @KingsChannel 如果这是您的第二天,请不要难过。每个人都必须从某个地方开始:)

标签: c# arrays min


【解决方案1】:
double [] arr = { 5.5 , 6.5 , 8.19 };
double minimum = arr.Min();

请注意,如果数组为空,这将给您一个错误。您可以先检查,然后再决定如果数组为空该怎么办:

double [] arr = { 5.5 , 6.5 , 8.19 };
double minimum = 0;

if (arr.Length > 0)
{
    minimum = arr.Min();
}
else
{
    // Add code to do something if the array is empty
}

【讨论】:

  • 我认为 if(arr.Any()) 更清晰(但这需要使用 System.Linq)。
  • 或者简单的使用可空类型double?
  • @Neil Min 需要 System.Linq。
  • @Neil 调用 .Any() 确实增加了创建枚举器和迭代第一个结果的开销。我知道在大多数情况下这可能没问题(我一直在生产代码中使用它),但在一个简单的例子中,我认为最好使用 .Length。
  • 我认为这取决于集合的实现。在这种情况下,Array.Any() 可能只是 { return this.Length!=0;}。不同之处在于向下一个查看代码的人展示了开发人员的意图。
猜你喜欢
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
  • 2017-11-05
相关资源
最近更新 更多