码迷,mamicode.com
首页 > 其他好文 > 详细

复习action委托

时间:2016-01-19 10:30:25      阅读:138      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!