Błąd przy użyciu modyfikatora params

0

Przepisałem z książki i nie mogę znaleźć błędu, podejrzewam, że spieprzyłem coś z konstrukcją programu, ale nie mogę dojść co konkretnie.
Zaznaczone na czerwono mam że CalculateAverage, z dopiskiem, że program nie może skonwertować method group to object.

using System;

namespace Modyfikator_params
{
    class Program
    {
        static void Main(string[] args)
        {
            CalculateAverage();

        }

            static double CalculateAverage(params double[] values)
        {
             Console.WriteLine("u sent me{0} doubles", values.Length);

             double sum = 0;
             if (values.Length == 0)
                 return sum;

             for (int i = 0; i < values.Length; i++)
                 sum += values[i];
                     return (sum / values.Length); 

            double average;

            average = CalculateAverage{4.0, 2.3, 3.2, 3.2};
            Console.WriteLine("average of this type is {0}", average);

            double[] data = { 4.0, 2.3, 22.32, 221 };
            average = CalculateAverage(data);
            Console.WriteLine("Average of data is {0}", average);

            Console.WriteLine("Average of data is {0}", CalculateAverage);

        }
    }
}
0

wywolujesz CalculateAverage z {} zamiast ()

Dodatkowo nie mozesz wypisac funkcji... (brakuje Ci tam wywolania)

Mi sie nie podoba to wywolywanie rekurencyjne w taki sposob jak jest to zrobiony tutaj

0
fasadin napisał(a):

wywolujesz CalculateAverage z {} zamiast ()

Dodatkowo nie mozesz wypisac funkcji... (brakuje Ci tam wywolania)

Mi sie nie podoba to wywolywanie rekurencyjne w taki sposob jak jest to zrobiony tutaj

Mógłbyś to poprawić?

Poprawiłem { na (, tylko nie wiem jak wywołać tą funkcję, nie jest od tego

CalculateAverage

();

?

0

Jest od tego, tylko w ostatniej linijce brakuje Ci tych wlasnie nawiasów przy wywołaniu :)

1

Poprawiłem formatowanie i errory. ;)

namespace Modyfikator_params
{
    using System;

    class Program
    {
        static double CalculateAverage(params double[] values)
        {
            Console.WriteLine("u sent me {0} doubles", values.Length);

            double sum = 0;
            if (values.Length == 0)
            {
                return sum;
            }

            for (int i = 0; i < values.Length; i++)
            {
                sum += values[i];
            }

            return sum / values.Length;
        }

        static void Main(string[] args)
        {
            CalculateAverage();

            double average = CalculateAverage(4.0, 2.3, 3.2, 3.2);
            Console.WriteLine("average of this type is {0}", average);

            double[] data = { 4.0, 2.3, 22.32, 221 };
            average = CalculateAverage(data);
            Console.WriteLine("Average of data is {0}", average);
        }
    }
}
0
DibbyDum napisał(a):

Poprawiłem formatowanie i errory. ;)


namespace Modyfikator_params
{
using System;
class Program
{

// ...
}
}



Dzięki!
Powiedz mi proszę jeszcze, dlaczego using System; jest pod namespace?
0

Akurat taką mam narzuconą konfiguracje w pracy. ;)
Jak jesteś ciekaw czym się to tak naprawdę się różni to tutaj masz przykład: http://stackoverflow.com/a/151560

0
Krzywy Samiec69 napisał(a):

Powiedz mi proszę jeszcze, dlaczego using System; jest pod namespace?

Dzięki temu można w jednym pliku mieć wiele klas używających różnych namespaców, a co za tym idzie, można upchać nawet całą solucję w jednym pliku. Dzięki temu można zaoszczędzić miejsce na dysku zajmowane przez system plików, co ma niebagatelne znaczenie dla JanuszSoftów pracujących na dyskach 200MB.
Taki kod najlepiej kasować bez czytania, bo tylko uczy złych wzorców.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0