news 2026/5/1 9:29:43

C# Lambda表达式实战指南,遍历方式以及空类型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C# Lambda表达式实战指南,遍历方式以及空类型

//lambda表达式

可以让我们定义一个变量接收一个函数,主要是作为另外一个函数的参数进行使用,具体体现变量和函数体之间使用=>,所以、
//其他编程语言称之为箭头函数,但是严谨来说c#没有箭头函数。

//如果一个函数仅在当前作用域进行使用 可以把函数定义在当前作用域就行
int Sum(int a ,int b)
{
return a + b;
}
Console.WriteLine(Sum(10,20));//30

//定义lambda表达式
//方法的组成: 参数列表、返回值 、方法名 方法体

//1使用Func关键字接收有返回值的lambda表达式


//Func<> 方法类型、函数类型
//第一个类型 是参数1的类型
//第二个类型 是参数2的类型
//第三个类型 是返回值的类型
//f1 变量名
//(a, b) 参数类别 不用写类型,多个参数时候加()
// => 表达式
//{}方法体
// 有返回值的添加return 关键字。
Func<int,int ,int> f1 = (a, b) => { return a + b; };
Console.WriteLine(f1(10,20));// 可以通过变量名调用函数


// 2使用Action关键字接收无返回值的lambda表达式


//定义一个字符串参数 无返回值的lambda表达式
// 如果一个参数可以把()不写
// 如果函数体只有一句可以把{}省掉
Action<string> f2 = (a) => Console.WriteLine(a);
f2("hell world");


//3 使用Predicate<>关键字接收返回值为bool类型的lambda表达式
Predicate<int> f3 = a=> a %2==0;
Console.WriteLine(f3(3));//false

Func<int,bool> f4 = a=> a%3==0;
Console.WriteLine(f4(9));//true


/*Func<参数类型,参数类型,返回值类型> f1 = (a,b)=>{return a+b}
* 可以接受有返回值的lambda表达式 参数个数没有限制、返回值的类型也是没有限制
*
* Action<string> f2 = a =>Console.WriteLine(a);
* 只能接收无返回值的lambda表达式
*
* Predicate<int> f3 = a=> a %2==0;
* 只能接收返回值为bool类型的lambda表达式
*/

// lambda具体的使用场景:最为另外一个函数参数进行使用,数组的查询方法当中使用
int[] ints = { 1, 2, 3, 4,6,9 };
Console.WriteLine(Array.Find(ints, a => a % 2 == 0));//2

int[] ss = Array.FindAll(ints,v=>v%3==0);//找到所有的数组

三种遍历方式


// 第一种遍历数组


for (int i = 0; i < ss.Length; i++)
{
Console.WriteLine(ss[i]+"-------");
}

//第二种遍历数组


foreach (var item in ss)
{
Console.WriteLine(item+"+++++++");
}

// 第三种遍历数组


Array.ForEach(ss, v => Console.WriteLine(v + "?????"));

特殊的有条件的遍历


//where 找到所有满足条件的元素
foreach (var item in ints.Where(v => { return v % 3 == 0; }))
{
Console.WriteLine(item);
}

//空类型是null

引用类型的变量都可以赋值成null


string s = null;
int[] ints = null;
object o = null;

// 基本数据类型不能赋值为null的


//int a = null; 报错

//如果想让基本数据类型能够赋值为null 可以使用?


int? a = null; // a以后可以等于null 在原先的范围内加一个null赋值范围
a = 100;// a可以再赋值100
// int sum = a + 100; 报错 a是可空类型,但是sum不是可空类型


//即想使用可空类型 又想使用基本类型进行运算,可以把可空类型再加一个问号 使用双??


int ? b = null; // b可空类型
b = 300;
int aa = b ?? 100; // b?? 如果b是null aa的值100, 如果b不是null aa的值300
Console.WriteLine(aa); //300


int? c = null;
int d = c ?? 100;
Console.WriteLine(d);//100


c = 999;
int sum = (c ?? 100) + 200;
Console.WriteLine(sum);// 1199

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 8:55:50

CudaText 编辑器完整指南:从新手到高手的快速上手手册

CudaText 编辑器完整指南&#xff1a;从新手到高手的快速上手手册 【免费下载链接】CudaText Cross-platform text editor, written in Lazarus 项目地址: https://gitcode.com/gh_mirrors/cu/CudaText CudaText 是一款基于 Free Pascal 开发的跨平台文本编辑器&#xf…

作者头像 李华
网站建设 2026/5/1 7:50:46

5大核心技术突破:GLM-4如何实现开源大模型的性能飞跃

5大核心技术突破&#xff1a;GLM-4如何实现开源大模型的性能飞跃 【免费下载链接】glm-4-9b 项目地址: https://ai.gitcode.com/zai-org/glm-4-9b 在人工智能大模型竞争日益激烈的今天&#xff0c;智谱AI最新发布的GLM-4-9B开源模型以其卓越的技术创新和突破性的性能表…

作者头像 李华
网站建设 2026/5/1 8:56:21

CRMEB商城系统快速入门:企业级电商平台的完整搭建指南

CRMEB开源商城系统Java版是一款功能全面的电商解决方案&#xff0c;基于SpringBoot技术栈开发&#xff0c;包含移动端、小程序、PC后台和完整的API接口体系。该系统集成了产品管理、用户体系、购物车、订单处理、积分优惠、营销活动等核心功能模块&#xff0c;为中小企业快速搭…

作者头像 李华
网站建设 2026/4/30 20:28:38

如何快速配置BetterDiscord:新手终极美化指南

如何快速配置BetterDiscord&#xff1a;新手终极美化指南 【免费下载链接】BetterDiscordApp Better Discord App enhances Discord desktop app with new features. 项目地址: https://gitcode.com/gh_mirrors/be/BetterDiscordApp BetterDiscord是一款强大的Discord桌…

作者头像 李华
网站建设 2026/5/1 7:52:44

如何快速清理Windows系统文件夹?Wicleanup工具完整使用指南

如何快速清理Windows系统文件夹&#xff1f;Wicleanup工具完整使用指南 【免费下载链接】Windows系统文件夹清理工具Wicleanup Wicleanup是一款专为Windows系统设计的文件夹清理工具&#xff0c;旨在帮助用户高效清理系统文件夹中的冗余文件&#xff0c;特别是install文件夹&am…

作者头像 李华
网站建设 2026/4/29 16:28:12

Runway 发布世界模型,模拟实时环境和可交互数字人;Qwen3-Omni 升级,视频语义理解与音视频同步能力持续优化丨日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」&#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的技术」、「有亮点的产品」、「有思考的文章」、「有态度的观点」、「…

作者头像 李华