всем привет, только начал изучать делегаты. Имеется вот такой пример:
// Класс, метод которого будет сообщен с делегатом.
class MyClass
{
// Создаем метод, который планируем сообщить с делегатом.
public string Method(string name)
{
return "Hello " + name;
}
}
// На 21-й строке создаем класс-делегата с именем MyDelegate,
// метод, который будет сообщен с экземпляром данного класса-делегата,
// будет принимать один строковой аргумент и возвращать строковое значение.
public delegate string MyDelegate(string name); // Создаем класс делегата. (1)
class Program
{
static void Main()
{
MyClass instance = new MyClass();
MyDelegate myDelegate = new MyDelegate(instance.Method); // Создаем экземпляр делегата и сообщаем с ним метод. (2)
string greeting = myDelegate.Invoke("djon"); // Вызываем метод сообщенный с делегатом. (3)
Console.WriteLine(greeting);
greeting = myDelegate("Grady Booch"); // Другой способ вызова метода сообщенного с делегатом. (3')
Console.WriteLine(greeting);
// Delay.
Console.ReadKey();
}
}
ради интереса заменил строку:
string greeting = myDelegate("djon"); // Вызываем метод сообщенный с делегатом. (3)
на
string greetingg = MyClass.Method("djon");
и получил следующую ошибку от Visual Studio 2012 :
Ошибка 1
Для нестатического поля, метода или свойства "Delegates.MyClass.Method(string)" требуется ссылка на объект
Ведь делегат это и есть объект, содержащий в себе указатели на методы.
Т.е этот пример с ошибкой допущенной мной ради эксперимента, и есть
наглядный или можно сказать
жизненный пример почему необходимо использовать делегаты?
Если так, то хорошо, если нет то приведите свои жизненные примеры использования делегатов.