C#中常用的几个委托

 

代码

using System;
using System.Drawing;

public class Example
{
    
public static void Main()
    {
        
// Create an array of five Point structures.
        Point[] points = { new Point(100200), 
            
new Point(150250), new Point(250375), 
            
new Point(275395), new Point(295450) };

        
// To find the first Point structure for which X times Y 
        
// is greater than 100000, pass the array and a delegate
        
// that represents the ProductGT10 method to the Shared 
        
// Find method of the Array class. 
        Point first = Array.Find(points, ProductGT10);

        
// Note that you do not need to create the delegate 
        
// explicitly, or to specify the type parameter of the 
        
// generic method, because the C# compiler has enough
        
// context to determine that information for you.

        
// Display the first structure found.
        Console.WriteLine("Found: X = {0}, Y = {1}", first.X, first.Y);
    }

    
// This method implements the test condition for the Find
    
// method.
    private static bool ProductGT10(Point p)
    {
        
if (p.X * p.Y > 100000)
        {
            
return true;
        }
        
else
        {
            
return false;
        }
    }
}

/* This code example produces the following output:

Found: X = 275, Y = 395
 
*/
public delegate void Action<in T>(
    T obj
)

using System;
using System.Windows.Forms;

delegate void DisplayMessage(string message);

public class TestCustomDelegate
{
   
public static void Main()
   {
      DisplayMessage messageTarget; 

      
if (Environment.GetCommandLineArgs().Length > 1)
         messageTarget 
= ShowWindowsMessage;
      
else
         messageTarget 
= Console.WriteLine;

      messageTarget(
"Hello, World!");   
   }      

   
private static void ShowWindowsMessage(string message)
   {
      MessageBox.Show(message);      
   }
}



public delegate TResult Func<in T, out TResult>(
    T arg
)



using System;

delegate string ConvertMethod(string inString);

public class DelegateExample
{
   
public static void Main()
   {
      
// Instantiate delegate to reference UppercaseString method
      ConvertMethod convertMeth = UppercaseString;
      
string name = "Dakota";
      
// Use delegate instance to call UppercaseString method
      Console.WriteLine(convertMeth(name));
   }

   
private static string UppercaseString(string inputString)
   {
      
return inputString.ToUpper();
   }
}


using System;
using System.Windows.Forms;

public class TestAction1
{
   
public static void Main()
   {
      Action
<string> messageTarget; 

      
if (Environment.GetCommandLineArgs().Length > 1)
         messageTarget 
= ShowWindowsMessage;
      
else
         messageTarget 
= Console.WriteLine;

      messageTarget(
"Hello, World!");   
   }      

   
private static void ShowWindowsMessage(string message)
   {
      MessageBox.Show(message);      
   }
}

using System;

public class GenericFunc
{
   
public static void Main()
   {
      
// Instantiate delegate to reference UppercaseString method
      Func<stringstring> convertMethod = UppercaseString;
      
string name = "Dakota";
      
// Use delegate instance to call UppercaseString method
      Console.WriteLine(convertMethod(name));
   }

   
private static string UppercaseString(string inputString)
   {
      
return inputString.ToUpper();
   }
}

using System;
using System.Windows.Forms;

public class TestAnonMethod
{
   
public static void Main()
   {
      Action
<string> messageTarget; 

      
if (Environment.GetCommandLineArgs().Length > 1)
         messageTarget 
= delegate(string s) { ShowWindowsMessage(s); };
      
else
         messageTarget 
= delegate(string s) { Console.WriteLine(s); };

      messageTarget(
"Hello, World!");
   }

   
private static void ShowWindowsMessage(string message)
   {
      MessageBox.Show(message);      
   }
}


using System;
using System.Windows.Forms;

public class TestLambdaExpression
{
   
public static void Main()
   {
      Action
<string> messageTarget; 

      
if (Environment.GetCommandLineArgs().Length > 1)
         messageTarget 
= s => ShowWindowsMessage(s); 
      
else
         messageTarget 
= s => Console.WriteLine(s);

      messageTarget(
"Hello, World!");
   }

   
private static void ShowWindowsMessage(string message)
   {
      MessageBox.Show(message);      
   }
}

 

posted @ 2011-01-11 16:23  chunchill  阅读(536)  评论(0编辑  收藏  举报