Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Передача делегату статического метода


Автор: Idsa 15.7.2008, 00:44
Я пытаюсь в статическом методе создать делегат на этот самый метод. Т. к. метод находится в этом же классе (это же один и тот же метод), я передаю метод без указания класса:
Код

public class MyClass
{
 public static void MyMethod()
 {
  MyEventHandler handler = MyMethod; // а не MyClass.MyMethod
 }
}

Есть ли что-то противозаконное (в рамках CLR smile ) в том, что я передаю метод без указания класса?
Компилятор никаких ошибок не выдает. Тем не менее сейчас при решении проблемы в разделе ASP.NET я столкнулся с тем, что делегат работает, если передавать метод с указанием класса и не работает без оного.

Добавлено @ 00:58
Кстати, если использовать полное объявление:
MyEventHandler handler = new MyEventHandler(MyMethod), то работает и без указания имени класса.

Автор: nikitao 15.7.2008, 01:13
Я не понимаю как могут аозникнуть проблемы. Краткие записи всегда преобразуются в стандартные. 

те 

Код

MyEventHandler handler = MyMethod


в 

Код

MyEventHandler handler = new MyEventHandler(MyClass.MyMethod);


Добавлено через 4 минуты и 8 секунд
Только я одного понять не могу. Я пишу :
Код

Handler handler = Main;


Смотрю в рефлекторе :

Код

Program.Handler handler = new Program.Handler(Program.Program.Main);


откуда 2 Program то ? %)

Автор: Idsa 15.7.2008, 01:21
Цитата(nikitao @  15.7.2008,  05:13 Найти цитируемый пост)
Program

Может, namespace?

Автор: nikitao 15.7.2008, 01:26
Ну я так сразу и подумал ))) Естественно нет никакого namespace Program

Автор: Idsa 16.7.2008, 00:10
nikitao, ты разобрался с лишним Program? А то у меня этот код в Reflectore отображается корректно.
Видимо, все-таки ошибка была не в этом.

Автор: nikitao 16.7.2008, 00:55
Разобрался. Xenocode бажит :(  Обычно им смотрю , а не рефлектором. Посмотрел рефлктором - все ok.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)