Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Применение методов экземпляра в качестве делегатов





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

// Делегаты могут ссылаться и на методы экземпляра.

using System;

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

delegate string StrMod(string str);

class StringOps

{

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

public string ReplaceSpaces(string s)

{

Console.WriteLine("Замена пробелов дефисами.");

return s.Replace(' ', '-');

}

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

public string RemoveSpaces(string s)

{

string temp = "";

int i;

Console.WriteLine("Удаление пробелов.");

for (i = 0; i < s.Length; i++)

if (s[i]!= ' ') temp += s[i];

return temp;

}

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

public string Reverse(string s)

{

string temp = "";

int i, j;

Console.WriteLine("Обращение строки.");

for (j = 0, i = s.Length - 1; i >= 0; i--, j++)

temp += s[i];

return temp;

}

}

class DelegateTest

{

static void Main()

{

StringOps so = new StringOps(); // создать экземпляр

// объекта класса StringOps Инициализировать делегат.

StrMod strOp = so.ReplaceSpaces;

string str;

// Вызвать методы с помощью делегатов.

str = strOp("Это простой тест.");

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

Console.WriteLine();

strOp = so.RemoveSpaces;

str = strOp("Это простой тест.");

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

Console.WriteLine();

strOp = so.Reverse;

str = strOp("Это простой тест.");

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

}

}

Результат выполнения этого кода получается таким же, как и в предыдущем примере, но на этот раз делегат обращается к методам по ссылке на экземпляр объекта класса StringOps.







Date: 2015-09-02; view: 374; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию