Ошибка CS1501: я не перегружаю метод Sum () правильно - PullRequest
1 голос
/ 24 октября 2010

Ниже приведен черновик № 5 для моей домашней работы на C # на этой неделе.Сначала я написал программу с использованием Linq, и она работала нормально.К сожалению, в инструкциях говорится, что я должен создать свой собственный метод вместо использования замечательного метода Sum (), уже найденного в Linq.Основная проблема с этим исходным кодом заключается в том, что перегрузка метода является неправильной (и также возможно, что весь мой метод Sum () тоже неверен).Поскольку наш всемогущий текст не дает четкого объяснения, как перегрузить такой метод, я как бы потерялся ... (или многое потерял).

Вот инструкции по назначению (снова):

"Создайте метод с именем Sum (), который принимает любое количество целочисленных параметров и отображает их сумму. Напишите метод Main (), который демонстрируетМетод Sum () работает правильно, когда передается одно, три, пять или массив из 10 целых чисел. Сохраните программу как UsingSum.cs. "

из Microsoft® Visual C # ® 2008, Введение в объектно-ориентированноеПрограммирование, 3е, Джойс Фаррелл

Вот мой исходный код:

using System;

public class UsingSum
{
    public static void Main()
    {

        //Step 1: Adding 1, 3 and 5

        int[] array1 = { 1, 3, 5 };

        int a;
        int b;
        int c;
        int d;
        int e;
        int f;
        int g;
        int h;
        int i;
        int j;        
        int firstSum;
        int secondSum;

        Console.Write("When the numbers 1, 3 and 5 are added together, using the Sum() method, the answer is: ");

        firstSum = Sum(array1);
        Console.WriteLine("{0}", firstSum);



        //Step 2: Entering variables into Array2[10]


        Console.Write("Enter first integer for addition: ");
        a = Convert.ToInt32(Console.ReadLine());
        Console.Write("Enter second integer for addition: ");
        b = Convert.ToInt32(Console.ReadLine());
        Console.Write("Enter third integer for addition: ");
        c = Convert.ToInt32(Console.ReadLine());
        Console.Write("Enter forth integer for addition: ");
        d = Convert.ToInt32(Console.ReadLine());
        Console.Write("Enter fifth integer for addition: ");
        e = Convert.ToInt32(Console.ReadLine());
        Console.Write("Enter sixth integer for addition: ");
        f = Convert.ToInt32(Console.ReadLine());
        Console.Write("Enter seventh integer for addition: ");
        g = Convert.ToInt32(Console.ReadLine());
        Console.Write("Enter eighth integer for addition: ");
        h = Convert.ToInt32(Console.ReadLine());
        Console.Write("Enter ninth integer for addition: ");
        i = Convert.ToInt32(Console.ReadLine());
        Console.Write("Enter tenth integer for addition: ");
        j = Convert.ToInt32(Console.ReadLine());

        int[] array2 = { a, b, c, d, e, f, g, h, i, j };

        Console.Write("The total of {0} + {1} + {2} + {3} + {4} + {5} + {6} + {7} + {8} + {9} is: ",
        a, b, c, d, e, f, g, h, i, j);

        secondSum = Sum(array2);
        Console.WriteLine("{0}", secondSum);


    }


//Step 3: Defining the Sum() method

   public static int Sum(int a, int b)

//My overload is generating error CS1501: No overload for method 'Sum' takes '1' arguments

   {

   int sum = 0;
   int[] adder = new int[0];
//designating an array with no parameters...

   for(int a = 0; a < adder.Length; ++a)
      adder[a] = a;

   foreach(int b in adder)
      sum += b;
      Console.WriteLine(" " + sum);
   }
}

1 Ответ

2 голосов
/ 24 октября 2010

Вы определяете сумму, чтобы принять 2 аргумента

public static int Sum(int a, int b)

но только вызывая его с 1 аргументом

firstSum = Sum(array1);

Попробуйте определить Sum для массива int:

public static int Sum(int[] input)
...