Delegates And Events 2 : delegate Event « Language Basics « C# / C Sharp

Home
C# / C Sharp
1.2D Graphics
2.Class Interface
3.Collections Data Structure
4.Components
5.Data Types
6.Database ADO.net
7.Design Patterns
8.Development Class
9.Event
10.File Stream
11.Generics
12.GUI Windows Form
13.Language Basics
14.LINQ
15.Network
16.Office
17.Reflection
18.Regular Expressions
19.Security
20.Services Event
21.Thread
22.Web Services
23.Windows
24.Windows Presentation Foundation
25.XML
26.XML LINQ
C# / C Sharp by API
C# / CSharp Tutorial
C# / CSharp Open Source
C# / C Sharp » Language Basics » delegate EventScreenshots 
Delegates And Events 2
Delegates And Events 2

/*
Learning C# 
by Jesse Liberty

Publisher: O'Reilly 
ISBN: 0596003765
*/
 using System;

 namespace DelegatesAndEvents
 {
     public enum comparison
     {
         theFirstComesFirst = 1,
         theSecondComesFirst = 2
     }

     // A simple collection to hold two items.
     class Pair
     {
         // Private array to hold the two objects.
         private object[] thePair = new object[2];

         // The delegate declaration.
         public delegate comparison
             WhichIsFirst(object obj1, object obj2);

         // Passed in constructor takes two objects,
         // added in order received.
         public Pair(
             object firstObject,
             object secondObject)
         {
             thePair[0= firstObject;
             thePair[1= secondObject;
         }

         // Public method that orders
         // the two objects by whatever criteria the objects like!
         public void Sort(
             WhichIsFirst theDelegatedFunc)
         {
             if (theDelegatedFunc(thePair[0],thePair[1])
                 == comparison.theSecondComesFirst)
             {
                 object temp = thePair[0];
                 thePair[0= thePair[1];
                 thePair[1= temp;
             }
         }

         // Public method that orders
         // the two objects by the reverse of whatever criteria
         // the objects like!
         public void ReverseSort(
             WhichIsFirst theDelegatedFunc)
         {
             if (theDelegatedFunc(thePair[0],thePair[1]) ==
                 comparison.theFirstComesFirst)
             {
                 object temp = thePair[0];
                 thePair[0= thePair[1];
                 thePair[1= temp;
             }
         }

         // Ask the two objects to give their string value.
         public override string ToString()
         {
             return thePair[0].ToString() ", "
                 + thePair[1].ToString();
         }
     }

     class Dog
     {
         private int weight;

         // A static delegate.
         public static readonly Pair.WhichIsFirst OrderDogs =
             new Pair.WhichIsFirst(Dog. WhichDogComesFirst);

         public Dog(int weight)
         {
             this.weight=weight;
         }

         // Dogs are sorted by weight.
         public static comparison WhichDogComesFirst(
             Object o1, Object o2)
         {
             Dog d1 = (Dogo1;
             Dog d2 = (Dogo2;
             return d1.weight > d2.weight ?
                 comparison.theSecondComesFirst :
                 comparison.theFirstComesFirst;
         }
         public override string ToString()
         {
             return weight.ToString();
         }
     }

     class Student
     {
         private string name;

         // A static delegate.
         public static readonly Pair.WhichIsFirst OrderStudents =
             new Pair.WhichIsFirst(Student.WhichStudentComesFirst);

         public Student(string name)
         {
             this.name = name;
         }

         // Students are sorted alphabetically.
         public static comparison
             WhichStudentComesFirst(Object o1, Object o2)
         {
             Student s1 = (Studento1;
             Student s2 = (Studento2;
             return (String.Compare(s1.name, s2.name?
                 comparison.theFirstComesFirst :
                 comparison.theSecondComesFirst);
         }

         public override string ToString()
         {
             return name;
         }
     }

    public class TesterDelegatesAndEvents1
    {
       public void Run()
       {
           // Create two students and two dogs
           // and add them to Pair objects.
           Student Jesse = new Student("Jesse");
           Student Stacey = new Student ("Stacey");
           Dog Milo = new Dog(65);
           Dog Fred = new Dog(12);

           // Create the Pair object.
           Pair studentPair = new Pair(Jesse,Stacey);
           Pair dogPair = new Pair(Milo, Fred);
           Console.WriteLine("studentPair\t\t\t: {0}",
               studentPair.ToString());
           Console.WriteLine("dogPair\t\t\t\t: {0}",
               dogPair.ToString());

           // Tell the student Pair to sort itself,
           // passing in the Student delegate.
           studentPair.Sort(Student.OrderStudents);
           Console.WriteLine("After Sort studentPair\t\t: {0}",
               studentPair.ToString());
           studentPair.ReverseSort(Student.OrderStudents);
           Console.WriteLine("After ReverseSort studentPair\t: {0}",
               studentPair.ToString());

           // Tell the Dog pair to sort itself,
           // passing in the Dog delegate.
           dogPair.Sort(Dog.OrderDogs);
           Console.WriteLine("After Sort dogPair\t\t: {0}",
               dogPair.ToString());
           dogPair.ReverseSort(Dog.OrderDogs);
           Console.WriteLine("After ReverseSort dogPair\t: {0}",
               dogPair.ToString());

       }

       [STAThread]
       static void Main()
       {
          TesterDelegatesAndEvents1 t = new TesterDelegatesAndEvents1();
          t.Run();
       }
    }
 }

           
       
Related examples in the same category
1.A very simple event demonstrationA very simple event demonstration
2.An event multicast demonstrationAn event multicast demonstration
3.Individual objects receive notifications when instance event handlers are usedIndividual objects receive notifications when instance     event handlers are used
4.A class receives the notification when a static method is used as an event handlerA class receives the notification when      a static method is used as an event handler
5.Create a custom means of managing the event invocation listCreate a custom means of managing the event invocation list
6.Use the bult-in EventHandler delegateUse the bult-in EventHandler delegate
7.Use delegate: eventUse delegate: event
8.Delegate and event hierarchyDelegate and event hierarchy
9.Events:Add and Remove FunctionsEvents:Add and Remove Functions
10.Events:Add and Remove Functions 2Events:Add and Remove Functions 2
11.Events: Custom Add and RemoveEvents: Custom Add and Remove
12.Delegates And EventsDelegates And Events
13.Chaining events.
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.