Здравствуйте, BadCats, Вы писали:
BC>
BC>конкретный случай построения класса-делегата сообщенного с данным методом
BC>
Объявляя делегат, ты описываешь сигнатуру метода: тип возвращаемого значения, определение Generic-типов, если есть, набор параметров, способ их передачи (по значению, ref, out).
Соответственно, если метод выглядит так:
public Tuple<string, int> GetTuple(int index, out string someString);
То и объявление делегата выглядит соответствующе:
delegate Tuple<string, int> GetTupleDelegate(int index, out string someString);
всем привет, только что начал изучать делегаты. имеется такой пример:
// Класс, метод которого будет сообщен с делегатом.
static class MyClass
{
// Создаем статический метод, который планируем сообщить с делегатом.
public static void Method()
{
Console.WriteLine("Строку вывел метод сообщенный с делегатом.");
}
}
// На 21-й строке создаем класс-делегата с именем MyDelegate,
// метод, который будет сообщен с экземпляром данного класса-делегата,
// не будет ничего принимать и не будет ничего возвращать.
public delegate void MyDelegate(); // Создаем класс делегата. (1)
class Program
{
static void Main()
{
MyDelegate myDelegate = new MyDelegate(MyClass.Method); // Создаем экземпляр делегата. (2)
myDelegate.Invoke(); // Вызываем метод сообщенный с делегатом. (3)
myDelegate(); // Другой способ вызова метода сообщенного с делегатом. (3')
// Delay.
Console.ReadKey();
}
}
обратите внимание, на данную строку:
public delegate void MyDelegate(); // Создаем класс делегата. (1)
данный курс предоставляется в виде видео-уроков, автор говорит следующее:
"обратите внимание, что метод (конструктор по умолчанию в нашем классе-делегате), который будет сообщен с этим экземпляром данного класса-делегата —
ничего не должен принимать , и также
ничего не должен возвращать "
вот мой вопрос: то, что конструктор по умолчанию класса-делегата :
ничего не должен принимать , и также ничего не должен возвращать " — это аксиома для всех делегатов при из создании,
или это конкретный случай из-за того, что данный делегат, в данном случае сообщен с таким методом:
public static void Method()
{
Console.WriteLine("Строку вывел метод сообщенный с делегатом.");
}
— который ничего не принимает в качестве параметров и является void т.е ничего не возвращает, и не повлиял ли данный метод на принципы построения делегата и параметры его конструктора?
Т.е в итоге это либо
общая аксиома
конкретный случай построения класса-делегата сообщенного с данным методом
вот в качестве ответа я хочу получить разъяснение и ответ, что из двух вариантов является верным.