OptArgMeth(1);

При первом вызове параметруalphaпередается значение 1, параметруbeta —значение 2, а параметруgamma— значение 3. Таким образом, все три аргумента задаются явным образом, а значения, устанавливаемые по умолчанию, не используются. При втором вызове параметруalphaпередается значение 1, а параметруbeta— значение 2, но параметруgammaприсваивается устанавливаемое по умолчанию значение 20. И наконец, при третьем вызове упомянутого выше метода параметруalphaпередается значение 1, а параметрамbetaиgammaприсваиваются устанавливаемые по умолчанию значения. Следует, однако, иметь в виду, что параметрbetaне получит устанавливаемое по умолчанию значение, если то же самое не произойдет с параметромgamma.Если первый аргумент устанавливается по умолчанию, то и все остальные аргументы должны быть установлены по умолчанию.

Весь описанный выше процесс демонстрируется в приведенном ниже примере программы.

// Продемонстрировать необязательные аргументы.

using System;

class OptionArgDemo {

static void OptArgMeth(int alpha, int beta=10, int gamma = 20)    {

Console.WriteLine ("Это аргументы alpha, beta и gamma: " + alpha + " " + beta + " " + gamma);

}

static void Main() {

// Передать все аргументы явным образом.

OptArgMeth(1, 2, 3);    i

IIСделать аргумент gamma необязательным.

OptArgMeth(1, 2);

// Сделать оба аргумента beta и gamma необязательными.

OptArgMeth(1);

}

}

Результат выполнения данной программы лишь подтверждает применение используемых по умолчанию аргументов.

Это аргументы    alpha,    beta    и    gamma:    12 3

Это аргументы    alpha,    beta    и    gamma:    1 2 20

Это аргументы    alpha,    beta    и    gamma:    1 10 20

Как следует    из приведенного выше результата, если аргумент не указан, то исполь

зуется его значение, устанавливаемое по умолчанию.

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

int Sample(string name = "пользователь", int userid) { // Ошибка!

Для исправления ошибки в этом объявлении необходимо указать аргументuseridдо аргументаname.Раз уж вы начали объявлять необязательные аргументы, то указывать после них обязательные аргументы нельзя. Например, следующее объявление также оказывается неверным.

int Sample(int accountld, string name =• "пользователь", int userid) { //.Ошибка!

Аргументnameобъявляется как необязательный, и поэтому аргументuseridследует указать до аргументаname(или же сделать его также необязательным).

Перейти на страницу:

Похожие книги