---恢复内容开始---
1.delegate
一般用法
delegate void writevalue(string vale);//申明一个委托,参数是string类型,无返回值 static void main(string[] args) { writevalue write = new writevalue(writeline);//实例化委托 write("喝水");//调用 console.readkey(); } public static void writeline(string value) { for (int i = 0; i < 5; i++) { console.writeline("第{0}次{1}", i, value); } }
匿名委托
delegate void writevalue(string vale); static void main(string[] args) { writevalue write = delegate (string value) { console.write(value); }; write("喝水"); console.readkey(); }
使用lambda表达式
如需要传入多个参数,需要用"()"将参数包括起来,用","隔开.
delegate void writevalue(string vale,string value1); static void main(string[] args) { writevalue write = (value,value1) => { console.write(value);console.write(value1); }; write("喝水","吃饭"); console.readkey(); }
多播委托
delegate void writevalue(string value); static void main(string[] args) { writevalue value1 = new writevalue(write); value1 += new writevalue(writeline); value1("s"); console.readkey(); } public static void writeline(string value) { console.writeline("帮我倒杯卡布奇洛,谢谢"); } public static void write(object value) { console.writeline("多加点糖,谢谢"); }
2.func<t,e>
t表示参数类型,e表示返回值类型. func<t1,t2,t3,e>表示有三个参数,类型分别为t1,t2,t3,返回值为e,以此类推.func<e>表示没有参数,返回值类型为e.
delegate void writevalue(string value); static void main(string[] args) { func<string, int> func = length; console.writeline(func("哈哈哈")); console.readkey(); } public static int length(string value) { return value.length; }
3.action<t>
action<t1,t2,t3>表示有三个参数,无返回值,以此类推.
static void main(string[] args) { action<string, string> action = length; action("吃饭饭", "喝水水"); console.readkey(); } public static void length(string value,string value1) { console.writeline(value); console.writeline(value1); }
4.predicate<t>:表示定义一组条件并确定指定对象是否符合这些条件的方法。该委托返回的是一个bool类型的值,如果比较满足条件 .只能有一个参数.
static void main(string[] args) { predicate<int> predicate = max; console.writeline(predicate(12).tostring()); console.readkey(); } public static bool max(int value) { return value > 0; }
---恢复内容结束---