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

  • 相关阅读:
    Echarts 实现中国地图并轮播指定的地区?
    Linux安装Zookeeper
    初遇携程apollo配置中心
    eclipse安装lombok
    依赖layui form模块 复选框tree插件(拓展可根据属性单选还是多选,数据反选)
    centos7环境下mysql5.7的安装与配置
    中文算数验证码(加减乘除)
    获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址;
    jdk自带的MD5进行数据的加密与解密
    MyBatis-plus 代码生成器
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/2266507.html
Copyright © 2011-2022 走看看