zoukankan      html  css  js  c++  java
  • 复习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();
    }
    }
    }
  • 相关阅读:
    Linux学习
    PHP语法笔记
    iOS二次发育(swift)闭包
    iOS二次发育(swift)类
    iOS二次发育(swift)结构体
    iOS二次发育(swift)枚举
    【NOIP2013模拟联考14】隐藏指令
    【NOIP2012模拟8.9】逐个击破
    NOIP2020.9.19模拟patrick
    NOIP2020.9.19模拟 spongebob
  • 原文地址:https://www.cnblogs.com/kexb/p/5141217.html
Copyright © 2011-2022 走看看