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

// Продемонстрировать групповую адресацию.

using System;

// Объявить тип делегата.

delegate void StrMod(ref string str);

class MultiCastDemo {

// Заменить пробелы дефисами.

static void ReplaceSpaces(ref string s) {

Console.WriteLine('Замена пробелов дефисами.'); s = s.Replace(' ' ,    '-');

}

// Удалить пробелы.

static void RemoveSpaces(ref string s) { string temp = ''; int i;

Console.WriteLine('Удаление пробелов.'); for(i=0; i < s.Length; i++) if(s[i] != '    ')    temp += s[i];

s = temp;

}

// Обратить строку.

static void Reverse(ref string s) { string temp = ''; int i, j;

Console.WriteLine('Обращение строки.'); for(j=0, i=s.Length-1; i >= 0; i—, j++) temp += s [i];

s = temp;

}

static void Main() {

// Сконструировать делегаты.

StrMod strOp;

StrMod replaceSp = ReplaceSpaces;

StrMod removeSp = RemoveSpaces;

StrMod reverseStr = Reverse; string str = 'Это простой тест.';

// Организовать групповую адресацию. strOp = replaceSp;

strOp += reverseStr;

// Обратиться к делегату с групповой адресацией. strOp(ref str);

Console.WriteLine('Результирующая строка: ' + str);

Console.WriteLine();

// Удалить метод замены пробелов и добавить метод удаления пробелов. strOp -= replaceSp; strOp += removeSp;

str = 'Это простой тест.'; // восстановить исходную строку

// Обратиться к делегату с групповой адресацией. strOp(ref str);

Console.WriteLine('Результирующая строка: ' + str);

Console.WriteLine() ;

}

}

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

Замена пробелов дефисами.

Обращение строки.

Результирующая строка:    .тсет-йотсорп-отЭ

Обращение строки.

Удаление пробелов.

Результирующая строка:    .тсетйотсорпотЭ

В методе Main () из рассматриваемого здесь примера кода создаются четыре экземпляра делегата. Первый из них, strOp, является пустым, а три остальных ссылаются на конкретные методы видоизменения строки. Затем организуется групповая адресация для вызова методов RemoveSpaces () и Reverse (). Это делается в приведенных ниже

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату