一、新旧写法对比
老的写法:
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 语法和方法参数语法更加统一。
对于常规业务代码影响不大,但对: