Delegates can refer to instance methods, too : delegate « Language Basics « C# / C Sharp






Delegates can refer to instance methods, too

Delegates can refer to instance methods, too
/*
C#: The Complete Reference 
by Herbert Schildt 

Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/


// Delegates can refer to instance methods, too. 
  
using System; 
 
// Declare a delegate.  
delegate string strMod(string str); 

class StringOps {
  // Replaces spaces with hyphens. 
  public string replaceSpaces(string a) { 
    Console.WriteLine("Replaces spaces with hyphens."); 
    return a.Replace(' ', '-'); 
  }  
 
  // Remove spaces. 
  public string removeSpaces(string a) { 
    string temp = ""; 
    int i; 
 
    Console.WriteLine("Removing spaces."); 
    for(i=0; i < a.Length; i++) 
      if(a[i] != ' ') temp += a[i]; 
 
    return temp; 
  }  
 
  // Reverse a string. 
  public string reverse(string a) { 
    string temp = ""; 
    int i, j; 
 
    Console.WriteLine("Reversing string."); 
    for(j=0, i=a.Length-1; i >= 0; i--, j++) 
      temp += a[i]; 
 
    return temp; 
  } 
} 
 
public class DelegateTest1 {   
  public static void Main() { 
    StringOps so = new StringOps(); // create an instance of StringOps
 
    // Construct a delegate. 
    strMod strOp = new strMod(so.replaceSpaces); 
    string str; 
 
    // Call methods through delegates. 
    str = strOp("This is a test."); 
    Console.WriteLine("Resulting string: " + str); 
    Console.WriteLine(); 
      
    strOp = new strMod(so.removeSpaces); 
    str = strOp("This is a test."); 
    Console.WriteLine("Resulting string: " + str); 
    Console.WriteLine(); 
 
    strOp = new strMod(so.reverse); 
    str = strOp("This is a test."); 
    Console.WriteLine("Resulting string: " + str); 
  } 
}


           
       








Related examples in the same category

1.Define your own delegateDefine your own delegate
2.Late Binding Delegates: A delegate is a repository of type-safe function pointers.
3.illustrates the use of a delegate 2illustrates the use of a delegate 2
4.illustrates the use of a multicast delegateillustrates the use of a multicast delegate
5.illustrates the use of a delegate that calls object methodsillustrates the use of a delegate that calls object methods
6.Demonstrates a simple form of a delegateDemonstrates a simple form of a delegate
7.Demonstrates combining and removing delegates to create new delegatesDemonstrates combining and removing delegates to create new delegates
8.Demonstrate getting and printing the invocation list for a delegateDemonstrate getting and printing the invocation list for a delegate
9.Demonstrates adding multiple methods to a delegateDemonstrates adding multiple methods to a delegate
10.Using a delegate with a container class to sort the collection and return a sorted array using different sort criteriaUsing a delegate with a container class 
       to sort the collection and return a sorted array using different 
       sort criteria
11.Demonstrate using a static delegate without declaring an instance of the classDemonstrate using a static delegate without declaring an instance of the class
12.A simple delegate exampleA simple delegate example
13.Two delegates
14.The minimum implementation of a delegateThe minimum implementation of a delegate
15.Delegates:Using Delegates
16.Delegates to Instance MembersDelegates to Instance Members
17.Delegates:MulticastingDelegates:Multicasting
18.Arrays of Delegates
19.To remove delegates from a multicast delegate, use the Remove method, the minus operator (-), or the -= assignment operator.
20.the syntax of the GetInvocationList method: delegate [] GetInvocationList()
21.The publisher/subscriber relationship is a one-to-many relationship.
22.Lifetime of outer variables is aligned with the delegate
23.Combining delegates Multiple delegates are combined using the Combine method, the plus operator (+), or the += assignment operator.
24.CreateDelegate and DynamicInvoke