Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык C# и основы платформы .NET.pdf
Скачиваний:
100
Добавлен:
11.05.2015
Размер:
1.22 Mб
Скачать

Использование именованных аргументов зачастую необходимо, если метод содержит опциональные параметры:

int res_4 = Add(10, z:20);

Метод с параметром-списком можно вызвать несколькими способами. Можно указать в качестве аргумента массив или передать методу произвольное (даже нулевое) количество аргументов соответствующего типа. Во втором случае для хранения аргументов будет создан временный массив (это немного снижает производительность):

//передаём два аргумента

PrintList(10, 20);

//теперь передаём четыре аргумента

PrintList(1, 2, 3, 4);

//создаём и передаём массив целых чисел

PrintList(new[] {10, 20, 30, 40});

//можем вообще ничего не передавать

PrintList();

Если при описании параметра использовались модификаторы ref или out, то они должны быть указаны и при вызове. Кроме этого, фактические аргументы с такими модификаторами должны быть представлены переменными, а не литералами или выражениями. В случае параметров-значений тип аргумента должен совпадать или неявно приводится к типу формального параметра. При согласовании типов в случае возникновения двусмысленности делается выбор числового типа из той же группы знаковости. Например, пусть имеются перегруженные методы M(uint x) и M(int x), а переменная y имеет тип ushort. Тогда вызов M(y) означает вызов версии с формальным параметром типа uint. Для refout- параметров требуется абсолютное совпадение типов.

9.3. Разделяемые методы

Разделяемые классы и структуры могут содержать разделяемые методы. Разделяемый метод состоит из двух частей: заголовка и реализации. Обычно эти части размещаются в различных частях разделяемого типа:

public partial class Student

{

partial void M(int x);

}

public partial class Student

{

partial void M(int x)

{

Console.WriteLine("M body");

}

}

28