首页 > 编程语言 >C#委托之一例看懂泛型委托

C#委托之一例看懂泛型委托

时间:2022-10-08 21:44:56浏览次数:54  
标签:Action Console 委托 C# 例看 参数 泛型 返回值

以为委托在编程中频繁使用,所以微软为使开发者方便使用委托,省去繁琐的重复定义 。给我们提供了三种定义好的泛型委托,分别是 Action、Func和Predicate。下面分别介绍

Action: 此委托绑定的方法不能有返回值,方法可以有至多16个参数,当然也可以无参数;

Func : 此委托绑定的方法可以有返回值。方法可以有至多16个参数;

Predicate: 此委托返回值为布尔型,方法只能又一个参数;

知道了这三个委托的特点下面我们通过这个例子来进一步熟悉他们的用法。 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 委托demo_泛型委托
{ 
    //泛型委托demo  2022年10月8日21:19:55
    //使用的是系统定义好的 Action,Func,Predicate三个泛型委托。他们各自使用场景如下

    class Program
    {   
        static void Main(string[] args)
        {
            //无参数的委托
            Action del1 = new Action(toSayHello);
            del1();
            //有参数的委托
            Action<string> del2 = new Action<string>(toSayAnything);
            del2("我叫lhz");
            //有参数,有返回值的委托
            Func<int ,int,int > del3=new Func<int,int,int>(toAdd);
            Console.WriteLine(toAdd(5, 2));
            //参数只能有一个,且返回值类型为bool型
            Predicate<int> del4=new Predicate<int>(isAdult);
            Console.WriteLine("是否成年:" + del4(13));

            Console.ReadKey();
        }

        //无参数,无返回值方法
        public static void toSayHello()
        {
            Console.WriteLine("Hello!");
        }
        //有参数,无返回值方法
        public static void toSayAnything(string s)
        {
            Console.WriteLine(s);
        }
        //输入两个整数 进行相加的方法
        public static int toAdd(int a, int b)
        {
            return a + b;
        }
        //输入年龄 判断是否成年的方法
        public static bool isAdult(int age)
        {
            if (age > 18)
                return true;
            else
                return false;
        }

    }
}

  总结,前面我们说过委托的四个步骤,因为我们使用的泛型委托是系统自定义好的,所以就省略了 咱们的步骤1:委托的定义

利用三个泛型的特点结合使用场景灵活的选择委托便可以。

标签:Action,Console,委托,C#,例看,参数,泛型,返回值
From: https://www.cnblogs.com/arcticfish/p/16770313.html

相关文章

  • Docker方式快速启动一个Redis实例
    安装Redis有多种方式,除了可以通过各个平台的软件包工具安装外,还可以直接从源码安装。但是,安装Redis可能会遇到一些这样的问题,比如:1.网络环境比较差,下载耗时比较长2.从源......
  • ABC 271 F - XOR on Grid Path(搜索 meet in the mid)
    ABC271F-XORonGridPath题意:​ 给出20*20的地图,每个点上都有一个点权,保证为正整数。请问从(1,1)走到(n,n)且路径上所有点权异或和为0的路径有多少条。思路:​......
  • web安全 XSS攻击 和 CSRF攻击
    是什么?XSS攻击又称跨站脚本攻击定义:攻击者给前端页面植入一段恶意代码,欺骗用户操作发送到服务器,服务器返回到前端,浏览器解析之后能被执行,从而获取用户信息,以及冒充用户......
  • 使用OPatch给Oracle打补丁
    查看数据库版本方法如下:以oracle用户登录数据库,查看数据库版本。$sqlplus/assysdbaSQL>select*fromv$version;输出信息包含如下类似信息。BANNER------------------......
  • ORA-1536: space quota exceeded for tablespace
    Error: ORA1536Text:  spacequotaexceededfortablespace"<name>"-------------------------------------------------------------------------------Cause:......
  • oracle 用户权限
    使用sys用户登录select*fromdba_users;查询数据库中的所有用户select*fromdba_roles;查询数据库中的所有角色select*fromdba_sys_privs;查询数据库中的所有用......
  • SAP UI5 ODataModel.createEntry 单步调试
    方法入口:initOData:function(){functionmySuccessHandler(){debugger;}functionmyErrorHandler(){debugger......
  • TCP和UDP联系与区别
    TCP和UDP是传输层的两个协议1、UDP的概念:UDP(UserDatagramProtocol用户数据报协议):是OSI(OpenSystemInterconnection开放式系统互联)参考模型中一种无连接的传输层协......
  • 如何给 SAP ABAP SEGW 开发的 OData 服务添加 Access-Control-Allow-Origin 响应头
    正如本教程的开篇介绍文章SAPOData开发教程-从入门到提高(包含SEGW,RAP和CDP)所提到的,SAPOData服务开发,从实现技术上来说,可以分为三大类。因此本教程也分为三大......
  • react e.stopPropagation() 前调用 await 耗时操作 的坑
    代码如下<divonClick={e=>{e.stopPropagation();}}/>这样是能阻止冒泡的,e.stopPropagation();能正常执行但是下面这样写是不行的<divonClick=......