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

上篇文章给大家分享了:

.NET 10 & C# 14 New Features 新增功能介绍-field关键字

今天继续给大家分享:带修饰符的简单 lambda 参数

C# 14 对 lambda 语法一致性进行了增强。

它允许在"简单 lambda 参数"(未加括号的单参数写法)中使用参数修饰符,例如 ref、out、in、scoped 等。

一、新旧写法对比

老的写法:

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 语法和方法参数语法更加统一。

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

  • 高性能代码

  • 底层库开发

  • Span / ref 语义使用者

这是一个非常实用的增强。

周国庆

20260225