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

C#中直接传新对象作为方法参数无需声明变量及报错原因解析

问题核心原因
  • 方法调用的参数位置只允许传入表达式,不允许写入普通变量声明语句

第一种写法的合法性

new FileInfo(@"D:\New.xlsx")属于合法的对象创建表达式,执行后会直接返回FileInfo类型的实例,完全匹配SaveAs方法的参数类型要求,因此可以直接作为参数传递,不需要提前赋值给命名变量。

第二种写法的报错原因

FileInfo pathVariable = new FileInfo(@"D:\New.xlsx")是完整的变量声明赋值语句,不属于可用于传参的表达式,C#语法不支持在普通方法参数的位置写变量声明语句,因此会触发编译错误。
如果需要先声明变量再传参,正确的写法是拆分语句:

// 先在方法调用外完成变量声明赋值
FileInfo pathVariable = new FileInfo(@"D:\New.xlsx");
// 再把变量作为表达式传入参数
package.SaveAs(pathVariable);

补充说明

仅out参数存在例外:C# 7.0及以上版本支持在传递out参数时内联声明变量,比如int.TryParse("123", out int res)是合法语法,属于C#专门为out参数设计的语法糖,普通参数不支持该用法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:09:00