Re: Вопрос по классу-делегату и принимаемыми им параметпами
От: LWhisper  
Дата: 12.04.16 12:32
Оценка: 49 (2) +2
Здравствуйте, BadCats, Вы писали:

BC>

Объявляя делегат, ты описываешь сигнатуру метода: тип возвращаемого значения, определение Generic-типов, если есть, набор параметров, способ их передачи (по значению, ref, out).
Соответственно, если метод выглядит так:
public Tuple<string, int> GetTuple(int index, out string someString);

То и объявление делегата выглядит соответствующе:
delegate Tuple<string, int> GetTupleDelegate(int index, out string someString);
Вопрос по классу-делегату и принимаемыми им параметпами
От: BadCats  
Дата: 12.04.16 12:20
Оценка:
всем привет, только что начал изучать делегаты. имеется такой пример:
// Класс, метод которого будет сообщен с делегатом.
    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 т.е ничего не возвращает, и не повлиял ли данный метод на принципы построения делегата и параметры его конструктора?

Т.е в итоге это либо

вот в качестве ответа я хочу получить разъяснение и ответ, что из двух вариантов является верным.
c# делегаты
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.