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

C#中变量提前初始化传参与参数内初始化的性能及语法差异问题

C# 两种传参写法的性能与语法问题解答

以下是你提到的两种写法的代码参考:
第一种:

public object Foo()
{
    var command = new MyCommand(param1);
    return Myfunction(command);
}

第二种:

public object Foo()
{
    return Myfunction(new MyCommand(param1));
}

内存与性能差异结论

两种写法在Release模式开启编译器优化的场景下,没有任何性能、内存占用的差异:

  • C#的JIT编译器会自动优化掉第一种写法中没有后续操作的局部临时变量,最终生成的IL代码和汇编代码和第二种完全一致
  • 两种写法中MyCommand实例的堆内存分配、回收逻辑完全相同,不会出现第一种写法多占内存的情况
    仅在未开启优化的Debug模式下,第一种写法会为了支持断点调试保留局部变量的栈空间存储,会有可忽略的极微小编译差异,普通业务场景下完全感知不到性能差距。

语法名称说明

第二种直接在方法参数位写对象初始化表达式的写法,属于内联临时变量初始化的写法,没有专属的官方语法命名,确实属于广义上的内联写法范畴,核心是省略了显式声明单次使用的局部变量的步骤,直接将表达式的求值结果作为参数传递给方法。

写法选择建议

  • 如果需要调试查看command的取值、或者后续还要复用这个实例,选择第一种写法
  • 如果仅单次传参,不需要额外操作实例,选择第二种写法更简洁,不会影响代码可读性

内容的提问来源于stack exchange,提问作者Danny Ellis Jr.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:12:05