powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Критична ли разница в методе отписки от события
7 сообщений из 7, страница 1 из 1
Критична ли разница в методе отписки от события
    #38028268
Sanprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
какой из вариантов правильный или по сути оба идентичны???
Код: c#
1.
2.
dataObject.SomeEvent -= this.OnDoSomeEvent;
dataObject.SomeEvent -= new EventHandler( this.OnDoSomeEvent );


просто занимаюсь оптимизацией кода, и выясняю некоторые подробности.
...
Рейтинг: 0 / 0
Критична ли разница в методе отписки от события
    #38028300
Sanprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а подписка была
Код: c#
1.
dataObject.SomeEvent += new EventHandler( this.OnDoSomeEvent );
...
Рейтинг: 0 / 0
Критична ли разница в методе отписки от события
    #38028364
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не критично.
Но!!!
Функция OnИмя события это не то.
Она определена как virtual.
И Вы можете переопределить ее.
К примеру:
Код: c#
1.
2.
3.
4.
5.
6.
        
protected override void OnDoSomeEvent(EventArgs e)
{
            //ваш код
            base.OnDoSomeEvent(e);
}


и при наступлении соотв. события она всегда будет отрабатываться.

А для подписки на событие надо создать свою функцию с сигнатурой для нужного вам события
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
//функция для обр события
void DoSome(object sender, EventArgs e)
{
         //ваш код
}
//подписка
void БлаБла_Load(object sender, EventArgs e)
{
      ....
      dataObject.SomeEvent += new EventHandler(DoSome);
}
//отписка
void БлаБла_Closed(object sender, EventArgs e)
{
   ...
   dataObject.SomeEvent -= DoSome;
   //или
   dataObject.SomeEvent -= new EventHandler(DoSome);
}
...
Рейтинг: 0 / 0
Критична ли разница в методе отписки от события
    #38028399
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sanprof,

оба правильные с одинаковым результатом.
...
Рейтинг: 0 / 0
Критична ли разница в методе отписки от события
    #38028443
Sanprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спс, в принципе на 99% я был уверен, что результат одинаков, просто мелкософт приводит везде примеры со вторым вариантом отписки, а я использую везде первый, вот и подумал, может есть в чем подвох.
...
Рейтинг: 0 / 0
Критична ли разница в методе отписки от события
    #38028522
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sanprofспс, в принципе на 99% я был уверен, что результат одинаков, просто мелкософт приводит везде примеры со вторым вариантом отписки, а я использую везде первый, вот и подумал, может есть в чем подвох.

в таких случаях полезно смотреть во что превращает компилятор исходный код

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 public delegate void DEL1();
        event DEL1 ev_del;
        void k1()
        {
            ev_del += new DEL1(DoSome);
            ev_del -= DoSome;
            ev_del -= new DEL1(DoSome);
        }
        void DoSome()
        {
            
        }


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
         ev_del -= DoSome;
000000b6  mov         rax,qword ptr [rsp+00000090h] 
000000be  mov         rax,qword ptr [rax+000001C0h] 
000000c5  mov         qword ptr [rsp+40h],rax 
000000ca  mov         rbx,7FF0003C938h 
000000d4  mov         rax,qword ptr [rsp+00000090h] 
000000dc  mov         qword ptr [rsp+48h],rax 
000000e1  mov         rcx,7FF001DA340h 
000000eb  call        FFFFFFFFF95675A0 
000000f0  mov         qword ptr [rsp+50h],rax 
000000f5  mov         r8,rbx 
000000f8  mov         rdx,qword ptr [rsp+00000090h] 
00000100  mov         rcx,qword ptr [rsp+50h] 
00000105  call        FFFFFFFFF86B3860 
0000010a  mov         rdx,qword ptr [rsp+50h] 
0000010f  mov         rcx,qword ptr [rsp+40h] 
00000114  call        FFFFFFFFF8746830 
00000119  mov         qword ptr [rsp+58h],rax 
0000011e  mov         rcx,7FF001DA340h 
00000128  mov         rdx,qword ptr [rsp+58h] 
0000012d  call        FFFFFFFFF9565E40 
00000132  mov         rdx,7FF001D3C30h 
0000013c  mov         r8,rax 
0000013f  mov         rcx,qword ptr [rsp+48h] 
00000144  call        FFFFFFFFF9913C40 
            ev_del -= new DEL1(DoSome);
00000149  mov         rax,qword ptr [rsp+00000090h] 
00000151  mov         rax,qword ptr [rax+000001C0h] 
00000158  mov         qword ptr [rsp+60h],rax 
0000015d  mov         rbx,7FF0003C938h 
00000167  mov         rax,qword ptr [rsp+00000090h] 
0000016f  mov         qword ptr [rsp+68h],rax 
00000174  mov         rcx,7FF001DA340h 
0000017e  call        FFFFFFFFF95675A0 
00000183  mov         qword ptr [rsp+70h],rax 
00000188  mov         r8,rbx 
0000018b  mov         rdx,qword ptr [rsp+00000090h] 
00000193  mov         rcx,qword ptr [rsp+70h] 
00000198  call        FFFFFFFFF86B3860 
0000019d  mov         rdx,qword ptr [rsp+70h] 
000001a2  mov         rcx,qword ptr [rsp+60h] 
000001a7  call        FFFFFFFFF8746830 
000001ac  mov         qword ptr [rsp+78h],rax 
000001b1  mov         rcx,7FF001DA340h 
000001bb  mov         rdx,qword ptr [rsp+78h] 
000001c0  call        FFFFFFFFF9565E40 
000001c5  mov         rdx,7FF001D3C30h 
000001cf  mov         r8,rax 
000001d2  mov         rcx,qword ptr [rsp+68h] 
000001d7  call        FFFFFFFFF9913C40  



на глаз видно , что целевой код идентичен друг другу
...
Рейтинг: 0 / 0
Критична ли разница в методе отписки от события
    #38028584
Sanprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
beg-in-er, спс, так еще понятнее.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Критична ли разница в методе отписки от события
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]