跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

C#数组高阶函数,你会用吗?

大家好,我是陈景序,今天我们来聊聊C#中那些高大上的数组高阶函数。是不是有时候看着这些函数名字就头大,不知道怎么用?别担心,今天我就来给大家一一揭秘。

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

  • 高阶函数:参数也是一个函数的函数,比如数组中的所有条件查询方法都是高阶函数。
  • 回调函数:以参数的形式传递进另一个函数的函数,比如Find和FindAll方法的第二个参数就是回调函数。
  • 递归函数:自己调用自己的函数,这个在数组方法中暂时不用,先背下概念。

二、普通IndexOf 与 高阶Find区别

Array.IndexOf()只能固定值精准匹配,不能根据条件查询。而高阶Find系列可以自定义条件查询,比如大于、小于、奇偶、整除、长度判断等。

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

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

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

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

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

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

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

遍历所有元素,返回所有满足条件的元素,组成新数组。找不到返回空数组(长度0)。

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

返回第一个满足条件元素的索引,找不到返回-1。

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

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

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

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

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

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

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

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

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

  • All() 完全等价 TrueForAll
  • GetValue(下标)
  • SetValue(值,下标)
  • GetType()
  • 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.方法,实例直接点方法

好了,今天的分享就到这里,希望对大家有所帮助。我是陈景序,我们下期再见!

相关文章