Әдіске сілтеме беру
Делегаттың айнымалысынан жоғары әдіс тікелей тағайындалды. Тағы бір әдіс бар - қажетті әдіс берілетін конструктордың көмегімен делегат объектісін құру:
1
2
3
4
5
6
|
Operation operation1 = Add;
Operation operation2 = new Operation(Add);
int Add(int x, int y) => x + y;
delegate int Operation(int x, int y);
|
Екі әдіс те тең.
Әдістердің делегатқа сәйкестігі
Жоғарыда жазылғандай, егер олар бірдей қайтарылатын типке және бірдей параметрлер жиынтығына ие болса, әдістер делегатқа сәйкес келеді,. Бірақ ref, in және out модификаторлары да ескерілетінін ескеру қажет. Мысалы, бізде делегат болсын:
1
|
delegate void SomeDel(int a, double b);
|
Бұл делегат, мысалы, келесі әдіске сәйкес келеді:
1
|
void SomeMethod1(int g, double n) { }
|
А следующие методы НЕ соответствуют:
1
2
3
4
|
double SomeMethod2(int g, double n) { return g + n; }
void SomeMethod3(double n, int g) { }
void SomeMethod4(ref int g, double n) { }
void SomeMethod5(out int g, double n) { g = 6; }
|
Мұнда SomeMethod2 әдісі делегат типінен басқа қайтарылатын түрге ие. SomeMethod3 басқа параметрлер жиынтығына ие. SomeMethod4 және SomeMethod5 параметрлері де делегат параметрлерінен ерекшеленеді, өйткені оларда ref және out модификаторлары бар.
Достарыңызбен бөлісу: |