DCSIMG
delegates - .NET Technology - Προγραμματισμός - StudentGuru

delegates

Καλησπέρα σας!Μπορεί κάποιος να μου εξηγήσει πότε πρέπει να χρησιμοποιώ έναν delegate?

Ευχαριστώ :)

8 Replies

  • καταρχάς, ρωτάς για να φτιάξεις καινούριο δικό σου delegate, να φτιάξεις instance ενός υπάρχον delegate ή και τα δύο; μερικές χρήσεις που έρχονται στο μυαλό

    1. να φτιάξεις δικά σου events

    2. να κάνεις handle event του συστήματος (π.χ. με το Button_Click handler event πάλι χρησιμοποιείς delegate)

    3. να γράψεις μια lambda expression4

    4. να γράψεις callback (π.χ. να περνάς instance ενός delegate σε μια μέθοδο η οποία μέθοδος και θα καλεί τον delegate όταν τελειώσει αυτά που είναι να κάνει)

    5. να γράψεις ένα anonymous method

  • In reply to Δημήτρης Γκανάτσιος:

    Ωραία, εφόσον ένας delegate αναφέρετε σε μία μέθοδο γιατί δεν  δηλώνω την  μέθοδο απευθείας εκεί που την χρειάζομαι και βάζω έναν delegate που αναφέρετε σε αυτή?sorry αλλά τα έχω μπερδεμένα στο μυαλό μου

  • In reply to rainboy:

    ο delegate μπορεί να δείξει σε οποιαδήποτε μέθοδο, μπορεί να αλλάξει και τη μέθοδο που δείχνει κατά τη διάρκεια της εκτέλεσης του προγράμματος. Να στο πω πιο απλά, δηλώνεις μεταβλητή για να αποθηκεύεις έναν ακέραιο, σωστά; Μόνο όταν θες ο ακέραιος να παραμείνει αμετάβλητος τον δηλώνεις με const. Έτσι και με τους delegates. Όταν θες να χρησιμοποιήσεις μια συνάρτηση (και ξέρεις ποια είναι), απλά την καλείς. Όταν δεν ξέρεις, τότε είναι που παίζεις με delegate.

  • In reply to Δημήτρης Γκανάτσιος:

    Σ'ευχαριστώ Δημήτρη :)

  • In reply to rainboy:

    ελπίζω να το κατάλαβες, εδώ είμαστε για ό,τι άλλο χρειαστείς!

  • In reply to Δημήτρης Γκανάτσιος:

    Σίγουρα θα σας χρειαστώ!Έχω πολλές απορίες :)

  • In reply to rainboy:

    Ένα χρήσιμο tutorial για αυτό που ζητάς είναι και αυτό εδώ στο msdn msdn.microsoft.com/.../aa288459(VS.71).aspx Γενικά είναι ένα δύσκολο θέμα οπότε μην σε αγχώνει αν δεν το καταλαβαίνεις με την πρώτη...

  • In reply to Giorgos Manoltzas:

    θα το μελετήσω Γιώργο και αυτό σ'ευχαριστώ πολύ.Δεν με αγχώνει απλά πιστεύω ότι είναι ένα δυνατό χαρακτηριστικό της c# και θέλω να το μάθω καλά.