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

C#是否支持在非匿名方法的参数中使用弃元赋值?

非匿名方法中使用C#弃元参数的可行性

在匿名方法订阅事件时,弃元赋值的写法非常实用,比如:

Loaded += (_, _) => { /* 无需使用sender或args的逻辑 */ }

但如果要把这段逻辑转为非匿名方法,就没法直接沿用这种写法:

private void OnLoaded(_, _) // CS0246: 找不到类型或命名空间“_”
private void OnLoaded(object _, EventArgs _) // CS0100: 参数名称“_”重复

当方法需要满足接口契约但又用不上全部传入参数时,弃元参数的需求会更突出(虽然有人会认为这种场景是接口设计的问题,但实际开发中我们时常不得不使用或修改他人的代码)。

常见的替代方案是给参数加后缀区分,比如:

private void OnLoaded(object _, EventArgs _2)

但这种写法存在隐患——如果有人在方法内误操作修改了_变量,会引发不必要的问题。更稳妥的写法是给参数加上明确的命名:

private void OnLoaded(object _sender, EventArgs _args)

这种写法能通过多数代码分析工具的检查,避免未使用参数的警告,但略显繁琐,还可能因命名不当导致字段被遮蔽的问题。

结论

目前没有任何C#版本支持在非匿名方法中完全使用弃元参数。C#的方法参数要求名称唯一,且不能仅用_作为重复参数名;同时,_也不能直接作为参数类型使用。弃元语法仅在匿名方法、lambda表达式、解构赋值等场景中被支持,非匿名方法必须遵循常规的参数命名规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:02:36