以后会将自己所写的代码以及个人经验发布到网上,见证自己的成长。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 匿名方法
{
//注意:lambda不需要传递参数类型,因为委托已经定义了参数类型,所以编译器能识别除了
class Program
{
//“定义”委托类型=》无参无返回值
public delegate void MyDelegate();
//委托变量需要放到类中,因为它相当于一种类型,然后再用它去创建对象,所以它和类的级别是一致的,所以只能放到主类中或者是放到和类一个级别的位置
//public delegate void MyDelegate();//他是一个无参数无返回值的委托变量,所以它只能接收无返回值无参数的方法;
//“定义”委托类型=》有参无返回值
public delegate void MyDelegate1(string str1);
//“定义”委托类型=》有参有返回值
public delegate string MyDelegate2(string s, int i, char ch);
//“定义”委托类型=》可变参数
public delegate string MyDeletgat3(params int[] pms);
static void Main(string[] args)
{
//“声明”委托类型变量myDel,用委托类型变量接收匿名方法
MyDelegate myDel = delegate(){//1.无参无返回值
Console.WriteLine("小鸟说早早早,你为什么不背上小书包?");
};//需要注意的是delgate是小写
myDel();
//对应lambda表达式
MyDelegate mD1 = () => { };
//委托类型变量接收有参数有返回值的匿名方法
MyDelegate1 myDelegate1 = delegate (string s) {//2.有参无返回值
Console.WriteLine( "嗯哼?");
};
myDelegate1("");
//对应lambda表达式
MyDelegate1 mD2 = (s) => { //对于只有一个参数的ambda表达式,可以将“()”省略
Console.WriteLine("嗯哼?");
};
//委托类型变量接收有参数有多个返回值的匿名方法
MyDelegate2 myDelegate2 = delegate (string s,int i,char ch) {//3.无参无返回值
return "嗯哼?";
};
Console.WriteLine(myDelegate2(" ",1,' '));
//对应ambda表达式
MyDelegate2 mD3 = (x,y,z) => {
return "嗯哼?";
};
//可变参数
MyDeletgat3 myDeletgat3 = (arr)=>{
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine(i);
}
return arr.Sum().ToString();
};
string sum = myDeletgat3(new int[] {1,2,3,4,5 });
Console.WriteLine(sum);
Console.ReadKey();
}
}
}