Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подробнее о методах и классах.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
144.16 Кб
Скачать

8.9.3 Практический пример использования необязательных аргументов

Для того чтобы показать на практике, насколько необязательные аргументы упро­щают вызовы некоторых типов методов, рассмотрим следующий пример программы. В этой программе объявляется метод Display(), выводящий на экран символьную строку полностью или частично.

Листинг 8.25

//Использовать необязательный аргумент, чтобы упростить вызов метода.

using System;

class UseOptArgs

{

// Вывести на экран символьную строку полностью или частично.

static void Display(string str, int start = 0, int stop = -1)

{

if(stop < 0)

stop = str.Length;

// Проверить условие выхода за заданные пределы.

if(stop > str.Length | start > stop | start < 0)

return;

for(int i=start; i < stop; i++)

Console.Write(str[i]);

Console.WriteLine();

}

static void Main() {

Display("это простой тест");

Display("это простой тест ", 10);

Display("это простой тест st", 5, 12);

}

}

Выполнение этой программы дает следующий результат.

это простой тест

тест

простой те

Внимательно проанализируем метод Display(). Выводимая на экран символьная строка передается в первом аргументе данного метода. Это обязательный аргумент, а два других аргумента  необязательные. Они задают начальный и конечный индексы для вывода части символьной строки. Если параметру stop не передается значение, то по умолчанию он принимает значение -1, указывающее на то, что конечной точкой вы­вода служит конец символьной строки. Если же параметру start не передается значе­ние, то по умолчанию он принимает значение 0. Следовательно, в отсутствие одного из необязательных аргументов символьная строка выводится на экран полностью. В про­тивном случае она выводится на экран частично. Это означает, что если вызвать метод Display() с одним аргументом (т.е. с выводимой строкой), то символьная строка будет выведена на экран полностью. Если же вызвать метод Display() с двумя аргументами, то на экран будут выведены символы, начиная с позиции, определяемой аргументом start, и до самого конца строки. А если вызвать метод Display() с тремя аргумента­ми, то на экран будут выведены символы из строки, начиная с позиции, определяемой аргументом start, и заканчивая позицией, определяемой аргументом stop.

Несмотря на всю простоту данного примера, он, тем не менее, демонстрирует зна­чительное преимущество, которое дают необязательные аргументы. Это преимуще­ство заключается в том, что при вызове метода можно указывать только те аргументы, которые требуются. А передавать явным образом устанавливаемые по умолчанию зна­чения не нужно.

Прежде чем переходить к следующей теме, остановимся на следующем важном мо­менте. Необязательные аргументы оказываются весьма эффективным средством лишь в том случае, если они используются правильно. Они предназначены для того, чтобы метод выполнял свои функции эффективно, а пользоваться им можно было бы просто и удобно. В этом отношении устанавливаемые по умолчанию значения всех аргумен­тов должны упрощать обычное применение метода. В противном случае необязатель­ные аргументы способны нарушить структуру кода и ввести в заблуждение тех, кто им пользуется. И наконец, устанавливаемое по умолчанию значение необязательного параметра не должно наносить никакого вреда. Иными словами, неумышленное ис­пользование необязательного аргумента не должно приводить к необратимым, отри­цательным последствиям. Так, если забыть указать аргумент при вызове метода, то это не должно привести к удалению важного файла данных!