• 复习action委托


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication4
    {
    public static class InvokeExt
    {
    
    //扩展方法进行装箱输出继承IEnumerable<T>的内容项
    public static void ShowItems<T>(this IEnumerable<T> collection)
    {
    foreach (var item in collection)
    {
    Console.WriteLine(item);
    
    }
    }
    
    //Action<Object>的尖括号里有一个Object说明有一个输入参数
    
    public static void InvokeAndCatch<TException>(this Action<Object> d, Object o) where TException:Exception
    {
    try
    {
    
    //在调用这个扩展方法的时候已在Main方法中为这个action委托赋值过了,而在Main方法中已经定义了这个委托的行为是o=>console.writeline(o.gettype());有一个输入参数,委托的行为是在控制台打印这个输入参数的类型
    //下面的语句相当于o=>Console.WriteLine(null.GetType());引发了空引用异常
    
    d(o);
    }
    catch (Exception)
    {
    
    ;
    }
    }
    }
    
    class Program
    {
    static void Main(string[] args)
    {
    
    //action委托定义了方法的行为(这里是告诉编译器这里的动作是传入一个参数,并在控制台上输出这个参数的类型)
    Action<Object> action = o => Console.WriteLine(o.GetType());
    
    // 这是为action<object>委托定义的一个扩展方法,这里的传入参数是一个null
    
    action.InvokeAndCatch<NullReferenceException>(null);
    Action a = "Jeff".ShowItems;
    a();
    Console.ReadKey();
    }
    }
    }
  • 相关阅读:
    映射和分析
    文档操作
    向 Nginx 主进程发送 USR1 信号
    ES集群7.3.0设置快照,存储库进行索引备份和恢复等
    ES7.3.0配置邮件告警
    Elasticsearch 史上最全最常用工具清单
    Grok在线调试网址
    Linux 小知识翻译
    Linux 小知识翻译
    Linux 小知识翻译
  • 原文地址:https://www.cnblogs.com/kexb/p/5141217.html
Copyright © 2020-2023  润新知