zoukankan      html  css  js  c++  java
  • Func(Of T, TResult) 委托

    在Action<Of T>基础上增加了返回值,其参数原型如下:

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

    /*
    In T
    此委托封装的方法的参数类型。

    该类型参数是逆变的。即可以使用指定的类型或派生程度更低的类型。有关协变和逆变的更多信息,请参见泛型中的协变和逆变。

    Out TResult
    此委托封装的方法的返回值类型。

    该类型参数是协变的。即可以使用指定的类型或派生程度更高的类型。有关协变和逆变的更多信息,请参见泛型中的协变和逆变。

    */ 

    以前Delegate方法:

    using System;
    using System.Windows.Forms;

    public delegate string DisplayMessage(string message);

    public class testTestDelegate
    {
        public static void Main()
        {
            DisplayMessage showMethod = DisplayToWindow;
            Console.WriteLine("Return Value:" + showMethod("ZHANGPS"));
            Console.ReadLine();
        }
        public static string DisplayToWindow(string strName)
        {
            MessageBox.Show("Antiquity Way:Hello World," + strName);
            
            return ("Antiquity Way:Hello World," + strName);
        }

    Func方法:

    using System;
    using System.Windows.Forms;

    public class testTestDelegate
    {
       public static void Main()
       {
          Func<string,string> showMethod = DisplayToWindow;
          Console.WriteLine("Return Value:" + showMethod("ZHANGPS"));
          Console.ReadLine();
       }
       public static string DisplayToWindow(string strName)
       {
          MessageBox.Show("Action Way:Hello World," + strName);
          
          return ("Action Way:Hello World," + strName);
       }

     更简化方法(Func还可以传递多个参数,请查阅MSDN):

    using System;
    using System.Windows.Forms;

    public class testTestDelegate
    {
       public static void Main()
       {
          Func<string,string> showMethod = s =>{ 
                                    MessageBox.Show("Action Way:Hello World," + s); 
                                    return ("Action Way:Hello World," + s); 
                                    };
          
          string strName = "ZHANGPS";
                
          Console.WriteLine(showMethod(strName));
          Console.ReadLine();
       }

    转自:http://msdn.microsoft.com/zh-cn/library/bb549151.aspx

  • 相关阅读:
    Asp.net与SQL一起打包部署安装(收集)
    算法:计算1的个数
    安装oracle817后出现的问题
    DataTime.ToString 的方法。
    历史上最经典智力题
    困惑,个人资源管理混乱不堪。
    Test for this blog
    转:一个硕士应届生的面试总结.(很精彩,特别是具体的各公司面试信息)
    太强了,不转不行,学习JAVA必备!(转载)
    可定制个性化页面JS(转)
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/2266507.html
Copyright © 2011-2022 走看看