Не удается неявно преобразовать тип 'double' в 'int' - PullRequest
2 голосов
/ 16 января 2020

Я новичок, проходящий через достаточно легкие испытания, и я не могу понять эту проблему. Код - это просто функция для нахождения самых больших и самых маленьких чисел в массиве, и даже если это не совсем эффективный способ сделать это, я понятия не имею, откуда код получает int. Кто-нибудь может пролить свет на это?

using System;
using System.Linq;
public class Program 
{
    public static double[] FindMinMax(double[] values) 
    {

        double small = values.Min();
        double big = values.Max();

        double result = new double[small, big];

        return result;
    }
}

1 Ответ

5 голосов
/ 16 января 2020

Понятия не имею, откуда код получает целое число от

Здесь (new double[small, big]) вы просите его создать 2-мерное (прямоугольник angular) ) массив с измерениями (например) 17,2 × 42,6 - это те измерения, которые он хочет, чтобы они были целыми числами.


Я думаю, что вы хотите создать вектор (одномерный массив на основе нуля) с два значения в качестве содержимого :

double[] result = new double[] {small, big};

Хотя я подозреваю, что кортеж-значение будет работать более эффективно, то есть

public static (double Min, double Max) FindMinMax(double[] values) 
{
    // ...
    return (small, big);
}

Возможно, вы захотите посмотреть в вопрос о том, является ли оптимальным (а может и не быть) записать явный одиночный l oop, который проверяет min и max на каждом шаге, а не две итерации. Но пока данные не огромны , это не будет иметь никакого значения. И если огромен , то вы попадаете в такие темы, как разбиение массива и параллельное выполнение мин / макс для разных сегментов, а затем агрегирование результатов разбиения. Здесь также могут быть опции SIMD.

...