首页 > 其他 > 详细

复习action委托

时间:2016-01-19 10:29:11      阅读:193      评论:0      收藏:0      [点我收藏+]
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();
}
}
}

 

复习action委托

原文:http://www.cnblogs.com/kexb/p/5141217.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!