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

C#遍历List创建对象时,直接传属性比用中间变量性能更好吗?

结论

两种写法没有可感知的性能差异,直接传属性的写法不会带来明显的性能提升。

原因解释

你定义的id、price只是方便读代码的临时变量,在Release模式开启编译器优化后,.NET的JIT编译器会直接消掉这类没有额外逻辑的多余变量,最终生成的机器码和你直接把apple.ID、apple.Price传入构造函数的写法完全一致,执行效率没有任何区别。
就算不开优化,你的列表只有几千条数据,两种写法的性能差最多是纳秒级,实际运行根本感知不到,完全没必要为了这个点改代码。

实际能提升性能的优化方向

与其纠结临时变量的开销,不如优先改这些确实有收益的点:

  • 把现在三个独立的if判断改成if-else if结构,匹配到对应水果类型后就跳过后面的类型检查,不用每个元素都做三次类型校验。
  • 初始化结果列表的时候预先设好容量:List<FruitIdentifier> fruitIdentifiers = new List<FruitIdentifier>(fruitList.Count);,避免列表动态扩容的时候反复申请内存、拷贝数据,这个优化的收益比调整临时变量高得多。
  • 后续如果还要加更多水果类型,可以给Apple、Orange、Mango提取一个公共的IFruit接口,把ID、Price属性定义在接口里,就不用写这么多分支判断,代码可读性和可维护性都会好很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:15:03