Еще одним средством, связанным с передачей аргументов методу, являетсяименованный аргумент.Именованные аргументы были внедрены в версии C# 4.0. Как вам должно быть уже известно, при передаче аргументов методу порядок их следования, как правило, должен совпадать с тем порядком, в котором параметры определены в самом методе. Иными словами, значение аргумента присваивается параметру по его позиции в списке аргументов. Данное ограничение призваны преодолеть именованные аргументы. Именованный аргумент позволяет указать имя того параметра, которому присваивается его значение. И в этом случае порядок следования аргументов уже не имеет никакого значения. Таким образом, именованные аргументы в какой-то степени похожи на упоминавшиеся ранее инициализаторы объектов, хотя и отличаются от них своим синтаксисом.

Для указания аргумента по имени служит следующая форма синтаксиса.

имя_параметра : значение

Здесьимя_параметраобозначает имя того параметра, которому передаетсязначение.Разумеется,имя_параметрадолжно обозначать имя действительного параметра для вызываемого метода.

Ниже приведен простой пример, демонстрирующий применение именованных аргументов. В этом примере создается метод IsFactor (), возвращающий логическое значениеtrue,если первый его параметр нацело делится на второй параметр.

// Применить именованные аргументы, using System;

class NamedArgsDemo {

// Выяснить, делится ли одно значение нацело на другое, static bool IsFactor(int val, int divisor) { if((val % divisor) == 0) return true; return false;

}

static void Main() {

// Ниже демонстрируются разные способы вызова метода IsFactor().

// Вызов с использованием позиционных аргументов, if(IsFactor(10, 2))

Console.WriteLine("2 - множитель 10.");

// Вызов с использованием именованных аргументов, if(IsFactor(val: 10, divisor: 2))

Console.WriteLine("2 - множитель 10.");

// Для именованного аргумента порядок указания не имеет значения, if(IsFactor(divisor: 2, val: 10))

Console.WriteLine("2 - множитель 10.");

// Применить как позиционный, так и именованный аргумент, if(IsFactor(10, divisor: 2))

Console.WriteLine("2 - множитель 10.");

}

}

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

2 - множитель 10.

2 - множитель 10.

2 - множитель 10.

2 - множитель 10.

Как видите, при каждом вызове методаIsFactor() получается один и тот же результат.

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

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