C# 数组高阶函数(Find/FindAll/Exists/ForEach/All/Any)

一、三个核心概念(必考定义)

1. 高阶函数(高级函数)

参数也是一个函数的函数,数组所有条件方法全部都是高阶函数。

2. 回调函数

以参数的形式,传递进另一个函数的函数(Find、FindAll 第二个参数都是回调函数)。

3. 递归函数

自己调用自己的函数(数组方法暂时不用,概念背诵)。


二、普通IndexOf 与 高阶Find区别

1. Array.IndexOf()

只能固定值精准匹配 ,不能根据条件查询(不能大于、小于、奇偶、整除)。

2. 高阶Find系列

可以自定义条件查询(大于、小于、偶数、奇数、整除、长度判断等)。


三、静态高阶方法大全(Array.xxx)

调用方式:Array.方法名(数组, 回调函数)

1. Array.Find() 【条件找单个元素】

原理(必背)

自动循环数组,每遍历一个元素就调用回调函数; 回调函数返回 true,立刻返回当前元素,停止遍历。

规则

  • 返回:第一个满足条件的元素

  • 找不到:返回 当前类型默认值(int返回0,string返回null)

案例

复制代码
Array.Find(ages, FindSmall18);  // 找第一个小于18
Array.Find(ages, FindEven);     // 找第一个偶数
Array.Find(ages, FindOdd);      // 找第一个奇数
Array.Find(ages, Find35);       // 找第一个同时被3、5整除

2. Array.FindLast() 【从后往前找单个】

倒序遍历数组,返回最后一个满足条件的元素。

复制代码
Array.FindLast(ages, Find35);

3. Array.FindAll() 【条件找全部元素】

遍历所有元素,返回所有满足条件的元素,组成新数组。

找不到返回:空数组(长度0)

复制代码
int[] arr = Array.FindAll(ages,FindOdd);

4. Array.FindIndex() 【找满足条件第一个下标】

返回:第一个满足条件元素的索引

找不到返回:-1

复制代码
Array.FindIndex(ages, FindEven);

5. Array.FindLastIndex() 【倒序找下标】

返回:最后一个满足条件元素的索引

复制代码
Array.FindLastIndex(ages, FindEven);

6. Array.ForEach() 【高阶遍历】

自动遍历数组每一个元素,无返回值,回调函数负责执行逻辑。

复制代码
Array.ForEach(ages,F1);

7. Array.TrueForAll() 【全部满足才为true】

所有元素全部满足条件 → true 只要有一个不满足 → false

8. Array.Exists() 【存在满足即为true】

只要存在一个满足条件 → true 全部不满足 → false


四、数组实例方法(非静态:数组名.方法)

1. All() 完全等价 TrueForAll

所有元素满足条件 → true

2. Any() 完全等价 Exists

任意一个满足条件 → true

3. GetValue(下标)

获取指定下标元素

4. SetValue(值,下标)

修改指定下标元素

5. GetType()

获取当前对象类型

6. GetLength(维度)

获取指定维度长度(多维数组专用)


五、终极对应关系(必背简答题)

  • Exists() ⇔ Any():存在一个满足就true

  • TrueForAll() ⇔ All():全部满足才true

  • 静态方法:Array.xxx()

  • 实例方法:数组名.xxx()


六、所有高阶方法返回值汇总(满分必背)

  • Find:返回单个元素 / 默认值

  • FindLast:返回最后匹配元素 / 默认值

  • FindAll:返回新数组(找不到返回空数组)

  • FindIndex:返回下标,找不到 -1

  • FindLastIndex:返回最后匹配下标,找不到 -1

  • Exists / Any:bool(有满足true)

  • TrueForAll / All:bool(全满足true)

  • ForEach:无返回值,纯遍历执行


七、回调函数模板(考试通用)

复制代码
// 条件判断模板
public static bool 方法名(int n)
{
    return 条件表达式;
}

// 遍历模板
public static void 方法名(int n)
{
    // 执行逻辑
}

八、终极默写短句(考前速记)

  • IndexOf只能匹配固定值,Find系列可以条件查询

  • Find找第一个,FindLast找最后一个,FindAll找全部

  • FindIndex找下标,找不到返回-1

  • Exists、Any有真即真;TrueForAll、All全真才真

  • ForEach高阶遍历,自动循环无需for

  • 静态Array.方法,实例直接点方法

相关推荐
Navigator_Z1 小时前
LeetCode //C - 1289. Minimum Falling Path Sum II
c语言·算法·leetcode
CCblandy1 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
mmmmath_32 小时前
LeetCode.104.二叉树的最大深度
数据结构·leetcode
u0111026752 小时前
JPG、PNG、WebP 怎么选?按透明度、体积和使用场景做判断
前端·javascript·vue.js·图像处理·ai作画
YangYang9YangYan2 小时前
2027供应链计划校招:数学与应用数学专业如何把预测模型讲成业务决策?
人工智能·sql·算法
jsjzsl23 小时前
递归自改进系统(RSI)的本质是自发对称破缺:智能爆炸有界—— AI研发切记盲目投入
人工智能·python·算法
程序员清风3 小时前
最短路径算法:BFS、Dijkstra 与 Floyd
java·算法·宽度优先
梦帮科技3 小时前
Kali Linux Scapy 畸形报文构造学——深度解剖非法 TCP Flags 与反常序列号
linux·爬虫·神经网络·算法·数学建模·系统架构·模拟退火算法
hhb_6183 小时前
一键生成数据看板,ECharts实战演示
前端·javascript·echarts