?

Log in

No account? Create an account
Dotnet_am

dotnet_am


C# и платформа .NET в вопросах и ответах

.NET технологии в Армении


Previous Entry Share Next Entry
2.1.1 Как написать фнкцию принимающую переменное количество параметров
Dotnet_am
dotnet_am
При помощи ключевого слова params функция может принимать  переменное количество параметров.
При вызове функции можно передать любое количество чисел.  Перед ключевым словом params могут быть другие параметры, после - нет.
Вот пример, вычисляющий среднее арифметическое. 

static double CalculateAverage(params double[] values)
{
    Console.WriteLine("You 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);
}

Дополнительный материал на английском
Tags:

  • 1
А что, все параметры должны иметь одинаковый тип?

Параметры с переменным количеством - да.
Но и это можно обойти. В C# есть тип object от которого происходят все другие типы. Любой тип можно преобразовать в object. Этот процесс называется boxing (а обратный процесс unboxing). Так вот, если взять params типа object то в нем можно передать что угодно.

Здесь есть пример.


boxing это все-таки не преобразование любого типа в object. Это преобразование произвольного value-type в reference-type object.

Согласен. Для большей точности можно еще одно слово добавить.
Boxing - это неявное преобразование произвольного value-type в reference-type object.

чем отличается от простой передачи массива?

ах да... запятыми разделены...

Точно, передавая параметры, даешь любое количество, разделенное запятыми, а не массив, который нужно еще объявить и заполнить значениями.

  • 1