当前位置: 首页 > news >正文

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

http://www.cnnetsun.cn/news/36752.html

相关文章:

  • Walrus去中心化存储系统:新手快速上手指南
  • 30、Python并发编程:线程、进程与调度全解析
  • 34、Python数据持久化:简单与关系序列化的全面解析
  • GPS测量工具终极指南:从零开始掌握精准定位分析
  • 3 SQL注入|数据类型与提交方式|笔记
  • 3D架构设计新体验:iCraft Editor快速上手攻略
  • 25、树莓派多媒体应用全攻略
  • 敏捷开发实战指南:从思维到落地的渐进式掌握
  • 中文词典数据库完整使用指南:解锁中华语言文化宝藏
  • 3D建模革命:5步掌握多视角智能生成技术实战指南
  • 振动信号数据集:工业设备故障诊断的终极指南
  • MATLAB实现基于黏菌优化算法(SMA)进行无人机三维路径规划
  • WindowResizer:5分钟学会窗口尺寸强制调整的终极解决方案
  • [Windows] Adobe Acrobat Pro DC 绿色精简版(PDF核心功能工具包)
  • Rust包管理器Cargo的7大核心功能:从零开始构建高效开发环境
  • 轻松上手深林算法:从零开始的深度随机森林实战指南 [特殊字符]
  • 西安电子科技大学数字图像处理完整教学资源包
  • 伺服系统设计完整指南:从理论到实战的深度解析
  • Freeze:三步实现EDR绕过的零检测Shellcode执行方案
  • 基于微信小程序的学习复习小程序(源码+lw+部署文档+讲解等)
  • PaperAI终极指南:如何用AI快速分析医学论文
  • 基于Java+SpringBoot的高校机动车认证信息管理系统的设计与实现(源码+lw+部署文档+讲解等)
  • 基于SpringBoot的甘肃特产销售系统的设计与实现(程序+文档+讲解)
  • Zephyr RTOS音频处理终极指南:告别卡顿与延迟
  • 22、SELinux系统管理全解析
  • 代码绘图深度解析:3步掌握DevOps架构可视化高效方案
  • 轻量级视频生成新纪元:腾讯HunyuanVideo 1.5如何解决行业三大挑战
  • OpenColorIO终极配置指南:5步快速搭建专业颜色工作流
  • 2025年,网安人掌握这些能力,比别人高80%的薪资!
  • 6、RHEL 8系统管理:用户、软件与systemd单元配置指南