C#基础——匿名函数和参数不固定的函数
2023-12-20 22:37:09
匿名函数、参数不固定的函数
匿名函数:没有名字,又叫做lambda表达式,具有简洁,灵活,可读的特性。
具名函数:有名字的函数。
1、简洁性:使用更少的代码实现相同的功能
MyDelegate myDelegate2 = delegate (string a) {
Console.WriteLine(a);
};
myDelegate2("委托调用匿名函数");
//使用Action调用匿名函数
Action<string> action1 = delegate (string a) {
Console.WriteLine(a);
};
action1("使用Action来调用匿名函数");
2、灵活性:匿名方法可以作为参数传递给方法,也可以当作返回值返回。
//使用Func调用匿名函数
Func<int, int, int> func1 = delegate (int a, int b) {
return a + b;
};
Console.WriteLine(func1(100, 200)); //300
3、可读性:因为代码变少了,所以结构更加清晰易懂。
//如果没有参数,那么可以进一步的简写
//使用Action调用没有参数的匿名函数
Action greet = delegate { Console.WriteLine("这是简写的方法"); };
greet();
//lambda表达式,本质也是匿名函数,也叫箭头函数
Action greet2 = () => { Console.WriteLine("这是最简单的写法"); };
greet2();
//使用Func调用匿名函数(箭头函数)
Func<int, int, int> func2 = (int a, int b) => { return a + b; };
Console.WriteLine(func2(1, 2));
//继续简化,根据前面泛型约束传入的类型,后面箭头函数里面就不用写类型了
Func<int, int, int> func3 = (a, b) => { return a + b; };
Console.WriteLine(func3(10, 20));
匿名函数支持多播(多个委托一起执行),一个委托,代表了多个方法
Action<string> test = a => { Console.WriteLine("test" + a); };
test += a => { Console.WriteLine(a); };
test("hello");//testhello hello 执行两次
开发当中临时需要一个方法,而却方法的使用次数比较少,代码结构也比较简单。推荐使用匿名函数。
如果方法的参数不固定,可以将参数类型前面添加params修饰符
params string[] string 不管是几个参数只要类型正确都会添加到这个数组中
static string TestMothod(params string[] strings) {
string temp = "";
foreach (var item in strings) {
temp += item;
}
return temp;
}
//因为使用了params修饰,所以数量不固定
Console.WriteLine(TestMothod("1", "2", "3", "4"));
文章来源:https://blog.csdn.net/qq_51810680/article/details/135117772
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!