You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何仅含一个位置参数的record无法使用Positional Pattern?

单参数Record解构赋值的问题解析

为什么(var name) = p会报错?

C#的解构赋值语法有明确规则:当使用括号包裹变量进行解构时,必须将类型声明(比如var)放在括号外面,而非括号内部。(var name) = p这种写法不符合语法规范,编译器会将其误判为普通表达式赋值,而非解构操作。

需要明确的是:单参数Record确实会自动生成Deconstruct方法(签名为public void Deconstruct(out string Name)),问题出在语法写法上,而非Deconstruct方法是否存在。

如何让单参数Record的解构生效?

有两种可行写法:

写法1:正确的解构赋值语法

将var放在括号外侧:

public record Person(string Name);

Person p = new("John Citizen");
var (name) = p; // 编译通过
Console.WriteLine(name);

写法2:直接调用Deconstruct方法

显式调用自动生成的Deconstruct方法:

public record Person(string Name);

Person p = new("John Citizen");
p.Deconstruct(out var name); // 编译通过
Console.WriteLine(name);

关于你尝试的丢弃变量写法

你试的(var name) _ = p是错误语法,丢弃变量_必须放在解构的括号内部,且仅适用于多参数解构需要忽略某些值的场景,单参数解构完全不需要额外的丢弃变量。

内容的提问来源于stack exchange,提问作者user16095727

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:35:21