Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


delegate

Postades av 2005-12-05 11:37:26 - Robert Bolocci, i forum c# (c-sharp), Tråden har 3 Kommentarer och lästs av 1853 personer

finns någon som har möjlighet förklara vad delegate är och hur den används med event för en nybörjare,

försöker lära mig och har läst min bok några gånger men har inte försått riktigt,

tack


Svara

Sv: delegate

Postades av 2005-12-05 18:17:10 - Patrik Löwendahl

En delegate är ett objekt vars enda upgift är att peka på en metod i minnet.

Delegaten kan peka på vilken metod som helst, så länge den metoden uppfyller de regler vi sätter upp när vi skapar delegaten.

Det här gör att vi inte direkt behöver bestämma vilken metod vi vill exekvera i en viss kodsnutt utan vi exekverar delegaten. Ex:

  public delegate void MessageDelegate(string Name);


Koden ovanför definerar en deleagt som kan peka på metoder som har void som retur värde och en strängparameter som invärde. Det innebär att:

 public void Hello(string Name) {
   Console.WriteLine("Hello {0}", Name);
}

 public string GetValue() {}


av de två ovanstående metoderna kan delegaten bara peka på den första. Dock kan den lika gärna peka på följande också:

 public void DeleteCategory(string categoryName) {}


eftersom signaturen är rätt.


Man låter ett delegat object peka på en metod genom att skicka in metoden som konstruktorargument när man skapar objektet:

  MessageDelegate del1 = new MessageDelegate(this.SayHello);
   
  del1("BillG");


Delegater används sedan i events för att kunna invokera anonymt. Dvs din knapp behöver inte veta i förväg vilken metod vi vill att den skall ropa på när någon trycker på knappen, det kan vi berätta för den via en delegat lite senare.

Ex:
  myButton.Click = new EventHandler(this.ButtonClick);


Där EventHandler har en defintiion som ser ut ungefär så här:

   delegate void EventHandler(object Sender, EventArgs e);


I min tilldelning så tog jag ingen hänsyn till att det kunde vara flera metoder som ville bli invokerade när jag trycker på en knapp utan jag ersatte helt enkelt den eller de metoder som redan registrerats. Det här är dålig code practices ( och jag tror flera events förbjuder det). Därför använder man istället operatorn + för att (eller Delegate.Combine) för att lägga till fler metoder i delegaten ex på de båda:

    btn.Click += new EventHandler(this.Method1);
    btn.Click += new EventHandler(this.Method2);


    btn.Click = Delegate.Combine(btn.Click, new EventHandler(this.Method1))
    btn.Click = Delegate.Combine(btn.Click, new EventHandler(this.Method2))



Svara

Sv:delegate

Postades av 2005-12-06 08:10:47 - Robert Bolocci

Tack så mycket för detta,

jag förstår inte riktig vad den har för tillämpningar och fördel, om jag vill att när man trycker på min button ska min button göra något eller anropa en method varför jag ska inte göra som följande mindre kod och enkelt,

är det en dum fråga =) , kanske jag har inte förstått skillnaden mellan att anropa en method och en even. är de samma sak?

<asp:Button id="Button1"
Text="Click here for greeting..."
OnClick="method1"
runat="server"/>


Svara

Sv: delegate

Postades av 2005-12-06 14:24:09 - Patrik Löwendahl

Den syntaxen kommer att under ytan bli den koden jag skrev. Allt du gör där är att nyttja en genväg som Microsoft gett dig.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 166
27 952
271 704
788
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies