Главная arrow Язык программирования C# arrow C# Полное руководство Герберт Шилдт arrow Возврат массива из метода C# Полное руководство Герберт Шилдт

Возврат массива из метода C# Полное руководство Герберт Шилдт

В языке C# массивы реализованы в виде объектов, а это означает, что метод может также возвратить массив. (В этом отношении C# отличается от C++, где не допускается возврат массивов из методов.) В качестве примера ниже приведена программа, в которой метод FindFactors () возвращает массив, содержащий множители переданного ему аргумента.

// Возвратить массив из метода.

using System;

class Factor {
   /* Метод возвращает массив facts, содержащий множители
      аргумента num. При возврате из метода параметр
      numfactors типа out будет содержать количество
      обнаруженных множителей. */
   public int[] FindFactors(int num, out int numfactors) {
      int [ ] facts = new int [80]; // размер массива 80 выбран произвольно
      int i, j;

      // Найти множители и поместить их в массив facts.
      for(i=2, j = 0; i < num/2 + 1; i++)
         if ( (num%i)==0 ) {
            facts[j] = i;
        j++;
         }

      numfactors = j;
      return facts;
   }
}

class FindFactors {
   static void Main() {
      Factor f = new Factor ();
      int numfactors;
      int [ ] factors;

      factors = f.FindFactors(1000, out numfactors);

      Console.WriteLine("Множители числа 1000: ");
      for (int i=0; i < numfactors; i++)
         Console.Write(factors [ i ] + " ");

      Console.WriteLine();
   }
}

При выполнении этой программы получается следующий результат:
   Множители числа 1000:
   2 4 5 8 10 20 25 40 50 100 125 200 250 500

В классе Factor метод FindFactors () объявляется следующим образом:
   public int[] FindFactors(int num, out int numfactors) {
Обратите внимание на то, как указывается возвращаемый массив типа int. Этот синтаксис можно обобщить. Всякий раз, когда метод возвращает массив, он указывается аналогичным образом, но с учетом его типа и размерности. Например, в следующей строке кода объявляется метод someMeth (), возвращающий двумерный массив типа double:
   public doublet,] someMeth() { // ...