Параметри масиви

C# дозволяє використовувати в якості параметрів методу будь який тип даних, в тому числі і масиви.

Масив в якості параметра

При використанні масиву в якості параметра, синтаксис не відрізняється від інших типів даних, які ми раніше використовували.

розглянемо приклад програми для пошуку максимального значення в масиві:

using System;

class Program
{
    static int ArrayMax(int[] array)
    {
        var maxValue = int.MinValue;
        foreach (var element in array)
        {
            if (maxValue < element)
            {
                maxValue = element;
            }
        }

        return maxValue;
    }

    static void Main(string[] args)
    {
        var a = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        Console.WriteLine($"Максимальне значення масиву {ArrayMax(a)}");
        Console.ReadLine();
    }
}

Масиви є типом даних за посиланням і передаються по посиланню, це означає, що будь які зміни переданого в якості аргументу масиву всередині методу, відображаються на масиві в основній програмі.

До прикладу, нам потрібен метод, який замінить всі від’ємні значення на їх значення по модулю. Код буде мати вигляд:

using System;

class Program
{
    static void ChangeToAbs(int[] arr)
    {
        for (var i = 0; i < arr.Length; i++)
        {
            if (arr[i] < 0)
            {
                arr[i] *= -1; //зміна знаку числа, також можна використати Math.Abs
            }
        }
    }

    static void Main(string[] args)
    {
        var a = new[] { -2, 5, 7, 3, -9, -6, 0, -1 };
        ChangeToAbs(a);
        Console.WriteLine(string.Join(", ", a));
        Console.ReadLine();
    }
}

Використання масивів в якості параметрів не накладає ніяких обмежень, їх можна використовувати разом з іншими типами даних, в будь якій послідовності. Код методу для множення кожного елементу цілочисельного масиву на ціле число:

static void Mult(int[] numbers, int k)
{
    for (var i = 0; i < numbers.Length; i++)
    {
        numbers[i] *= k;
    }
}

Змінна кількість аргументів

Ключове слово params дозволяє відмітити параметр методу, який приймає змінну кількість аргументів.

При використанні модифікатора params на метод накладаються наступні обмеження:

  • Параметр, відмічений ключовим словом params, повинен бути одновимірним масивом;
  • Після ключового слова params не допускається оголошення інших параметрів, іншими словами він повинен бути останнім в списку параметрів;
  • Можна використовувати тільки один параметр відмічений як params;
  • Аргументи повинні мати той же тип, який вказаний при оголошенні параметру;
  • Список аргументів розділяється комою;
  • Якщо аргументи не передаються, то список params пустий – Length == 0.

Метод зі змінним числом аргументів може приймати на вхід масив того ж типу.

Приклад використання змінної кількості параметрів в методі для пошуку мінімального значення зі списку:

using System;

class Program
{
    static float Minimal(params float[] values)
    {
        var min = float.MaxValue;

        for (var i = 0; i < values.Length; i++)
        {
            if (min > values[i])
            {
                min = values[i];
            }
        }

        return min;
    }

    static void Main(string[] args)
    {
        Console.WriteLine(Minimal()); //3.4E38
        Console.WriteLine(Minimal(2, 5)); //2
        Console.WriteLine(Minimal(6, 5, 4, 3, 1));//1
        Console.WriteLine(Minimal(new[] { 5f, 9f })); //5
        Console.ReadLine();
    }
}

Дивіться також: