.NET 10 & C# 14 New Features 新增功能介绍-带修饰符的简单 lambda 参数

一、新旧写法对比

老的写法:

x => x * 2

如果想加修饰符:

ref x => x + 1 // ❌ 不允许

必须改成完整参数列表形式:

复制代码
(ref int x) => x + 1

新的写法

复制代码
ref x => x + 1

等价于

复制代码
(ref int x) => x + 1

前提是类型可以推断。

二、支持的修饰符

可以用于简单 lambda 参数的修饰符包括:

  • ref

  • out

  • in

  • scoped

  • ref readonly

三、代码示例

Ref参数

复制代码
delegate void RefAction(ref int x);

RefAction action = ref x => x++;

In参数

复制代码
delegate void InAction(in int x);

InAction action = in x => Console.WriteLine(x);

范围参数

复制代码
Span<int> span = stackalloc int[10];

ProcessSpan(scoped s => s[0] = 1);

四、典型适用场景

"带修饰符的简单 lambda 参数"本质是:

让 lambda 语法和方法参数语法更加统一。

对于常规业务代码影响不大,但对:

相关推荐
fīɡЙtīиɡ ℡12 分钟前
深入学习JAVA并发编程(上)
java·开发语言·学习
zzzll111114 分钟前
HashMap、HashTable、ConcurrentHashMap 详细区别与深度解析
开发语言·python
老师我太想进步了202627 分钟前
C语言版讲解函数递归
c语言·开发语言
猿长大人1 小时前
C# | 函数式编程入门
开发语言·c#·.net
W_326001 小时前
Python 组合数据类型——序列(列表 & 元组)
开发语言·python
Billy121381 小时前
Day10-C++20 Ranges(上):惰性求值与组合式数据处理
开发语言·c++进阶学习
有点。1 小时前
C++深度优先搜索(二)
开发语言·c++·深度优先
二进制杯莫停1 小时前
A和B环境的python版本相同,B环境无法安装pip依赖,离线安装
开发语言·python·pip
l1t2 小时前
kryonix提交的DuckDB 统一并优化标量执行器基础设施 - #24564 PR
开发语言·数据库·数据仓库·sql
unityのkiven3 小时前
C# 中的奇异递归模板模式:MonoSingleton<T> 的实现
java·开发语言·c#