почему, когда я отбрасываю "static" из DelegateMethod, я получаю ошибку?
Вы не указали точно, по какой ошибке вы запутались. Я подозреваю, что ошибка, которая вас смущает, заключается в том, что эта строка не скомпилируется, если DelegateMethod
не static
и вы пишете строку кода в методе static
в содержащем классе:
Del handler = new Del( DelegateMethod);
Причина этого в том, что если вы не объявите DelegateMethod
как static
, то вам нужен экземпляр для ссылки на метод. Учитывая, что ваш код, вероятно, записывается в методе static
для содержащего класса, не существует неявного this
, и поэтому вам необходим явный экземпляр. Предполагая, что ваш содержащий класс называется Foo
:
Foo foo = new Foo();
Del handler = ne Del(foo.DelegateMethod);
См