Actiion Func ;Donet framework 中已经定义好的委托

在项目开发中特别是多线程项目中时常用到委托,通常情况下我们自己定义我们自己的委托,其实系统已经为我们定义好了大部分功能都能用上的委托,如下

希望对大家有所帮助

Donet framework 中定义的委托:

 

一:Action 与 Action<T>
             Action 委托
             封装一个方法,该方法不具有参数并且不返回值。
             命名空间:    System
             程序集:    mscorlib (在 mscorlib.dll 中)
            语法:  public   delegate   void  Action()
 
           Action < T >   委托
          封装一个方法,该方法只有一个参数并且不返回值。 
           命名空间:    System
            程序集:   mscorlib (在 mscorlib.dll 中)
           语法:  public   delegate   void  Action< in  T>( T obj)

      Action 委托例子  REF ADDR: http://msdn.microsoft.com/zh-cn/library/system.action.aspx
     public   class  Anonymous
  {

   public static void Main()

   {

      Name testName = new Name("Koani");

      Action showMethod = delegate() { testName.DisplayToWindow();} ;

      showMethod();

   }

  }
Action<T>委托例子   REF ADDR:http://technet.microsoft.com/zh-CN/library/018hxwa8
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);      

   }

}

以上为.net framework 2.0以上版本都支持

Action<T1, T2> , Action<T1, T2, T3> , Action<T1, T2, T3, T4> 委托

Action<T1,T2>例子:http://msdn.microsoft.com/zh-cn/library/bb549311

Action<T1, T2, T3> 例子:http://msdn.microsoft.com/zh-cn/library/bb549392

Action<T1, T2, T3, T4> 例子:http://msdn.microsoft.com/zh-cn/library/bb548654

以上的委托在.net framework 3.5 以上版本都支持,2.0的版本不支持

现在Action委托已经到可以拥有16个输入参数,不过从5个参数到16个参数这些Action只有在.net framework 4.0 以上的版本才支持
例子请参考 http://msdn.microsoft.com/zh-cn/library/system.action
------------------------------------huali de fengexian------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------
二:Func<TResult> 与 Fun<T,TResult>

Func<TResult> 委托

封装一个不具有参数但却返回 TResult 参数指定的类型值的方法。
命名空间:  System
程序集:  mscorlib(在 mscorlib.dll 中)
语法:public delegate TResult Func<out TResult>()
 
   
Func<TResult> 例子: ERF ADDR:http://msdn.microsoft.com/zh-cn/library/bb534960.aspx
public class Anonymous

{

   public static void Main()

   {

      OutputTarget output = new OutputTarget();

      Func<bool> methodCall = delegate() { return output.SendToFile(); };

      if (methodCall())

         Console.WriteLine("Success!"); 

      else

         Console.WriteLine("File write operation failed.");

   }

}

Func<TTResult> 委托

封装一个具有一个参数并返回 TResult 参数指定的类型值的方法。

 

命名空间:  System
程序集:  mscorlib(在 mscorlib.dll 中)
语法:public delegate TResult Func<in T, out TResult>(T arg)
Func<T,TResult>例子: REF ADDR :  http://msdn.microsoft.com/zh-cn/library/bb549151.aspx
using System;



public class GenericFunc

{

   public static void Main()

   {

      // Instantiate delegate to reference UppercaseString method

      Func<string, string> 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;



public class Anonymous

{

   public static void Main()

   {

      Func<string, string> convert = delegate(string s) { return s.ToUpper();}; 



      string name = "Dakota";

      Console.WriteLine(convert(name));   

   }

}

framework 3.5 4.0 :(0-4个输入参数)
  public delegate TResult Func<out TResult>()
  public delegate TResult Func<in T, out TResult>(T arg)
 public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1,T2 arg2)

…………
public delefate TResult Func<in T1,in T2,in T3,in T4,out TResult>(T1 arg1,T2 arg2,T3 arg3 T4 arg4) 四个输入参数

framework 4.0 :支持上边的以外 还支持 到 十六个输入参数

public delegate void Action<in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8, in T9, in T10, in T11, in T12, in T13, in T14, in T15, in T16>(
	T1 arg1,

	T2 arg2,

	T3 arg3,

	T4 arg4,

	T5 arg5,

	T6 arg6,

	T7 arg7,

	T8 arg8,

	T9 arg9,

	T10 arg10,

	T11 arg11,

	T12 arg12,

	T13 arg13,

	T14 arg14,

	T15 arg15,

	T16 arg16

)

见:http://msdn.microsoft.com/zh-cn/library/bb534303

   

你可能感兴趣的:(framework)