Kezdőoldal » Számítástechnika » Programozás » C# ban van lehetőség paraméter...

C# ban van lehetőség paramétert megadni feliratkozásnál egy delegate nek anélkül hogy azonnal meghívnám? Ha nem, akkor milyen lehetőségeim vannak ilyenkor?

Figyelt kérdés
Futásidőben feliratkozok egy-egy delegate re, eddig lambda t használtam ha paramétereket is kellett adnom, de lambdaval legjobb tudomásom szerint nem lehet leiratkozni(eddig nem volt gond mert mindig csak felülírtam, nem hozzáadtam). Van mód arra, hogy feliratkozásnál átadjak néhány paramétert, vagy esetleg delegate re alternatíva ami ugyanezt a funkcionalitást tudja, de opcionálisan adhatok neki paramatért is?

2019. jan. 15. 18:10
 1/5 anonim ***** válasza:
Abszolút semmi értelme annak amit írsz.
2019. jan. 15. 18:49
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:

Ha egy event-re szeretnél egy handlert tenni, akkor a "+="-t beírva és dupla tabot nyomva a Visual Studio azonnal legenerálja neked a handler függvényt.

Ha nem használsz VS-t sem ördöngősség, megnézed mi az event delegate-je és egy annak megfelelő függvényt hozol létre kézzel.

2019. jan. 15. 18:56
Hasznos számodra ez a válasz?
 3/5 A kérdező kommentje:
Ennek semmi köze a kérdésemhez, az eventhandler is csak egy delegate, nem oldja meg a problémámat. Van egy delegate amit meghívok egy bizonyos eseménykor, erre a delegate re feliratkozok több metódussal, van amelyiknek szeretnék előre megadott paramatéreket megadni, van amelyiknek nem. myDelegate += method1; ez működik gondn élkül, myDelegate += method2(args) nem működik. Értem miért nem működik, az érdekel hogy mit kéne használnom helyette amivel elérem amit szeretnék. Mint említettem korábban lambdát használtam, myDelegate += () => method2(args); működik gond nélkül, csak épp lambdával nem lehet leiratkozni. Ennél egyszerűbben nem tudom leírni, sajnálom ha így sem érted.
2019. jan. 15. 19:11
 4/5 A kérdező kommentje:
Tehát a probléma, hogy az adathoz amit később meg akarok adni paraméterként kizárólag a feliratkozáskor férek hozzá, amikor meghívom a delegate re feliratkozott metódusokat már nem.
2019. jan. 15. 19:16
 5/5 anonim ***** válasza:

Na akkor tisztázzuk. A metódusodnak az alakját három dolog határozza meg:

1) a paraméterek száma

2) a paraméterek típusa

3) a visszatérési érték típusa.


A delegate arra jó, hogy létrehozz egy új típust, ami leírja bizonyos metódusok alakját. Mint típusnak, jól meg kell határoznia, hogy milyen értékeket vehetnek fel. Tehát ha van egy delegate-ed:

delegate int Valami(int a, int b);

akkor ennek értéke lehet olyan metódus referenciája, amelynek az alakja

int Osszead(int a, int b) => a+b;

de nem lehet

int Szoroz(int a) => a * 2;

2019. jan. 15. 22:10
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!