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

Visual Studio代码优化建议中Distinct方法为何出现两次

问题解答

优化建议出现两次Distinct的原因

你写的原始代码里,New Char(result.Count - 1) {}是完全无意义的冗余操作——这行创建的空数组会被下一行result.ToArray()的返回值直接覆盖,没有任何实际作用。
VS的自动优化逻辑没有识别到这行是冗余代码,只是机械地将你单独声明的result变量做了内联处理:原本获取长度用的result.Count内联后变为erlaubte_Zeichen.Distinct().Count,后面转数组的result.ToArray()内联后变为erlaubte_Zeichen.Distinct().ToArray(),自然就出现了两次Distinct调用。

该优化逻辑完全不合理

甚至比你原本的代码问题更大:

  • 冗余的空数组分配步骤没有被移除,平白多了一次无意义的内存申请和释放
  • 两次独立的Distinct调用,相当于对原数组做了两次去重遍历,执行耗时直接翻倍

顺带提一句,你原本的代码其实也有隐藏的性能问题:Distinct()返回的是延迟执行的IEnumerable(Of Char),先调用Count再调用ToArray(),同样会触发两次去重遍历,性能损耗和VS给出的优化方案是一样的。

正确写法

你要实现的去重逻辑只需要一行代码即可,完全不需要手动提前分配数组空间:

erlaubte_Zeichen = erlaubte_Zeichen.Distinct().ToArray()

Distinct().ToArray()内部会自动根据去重后的元素数量创建对应长度的数组,不会有多余的遍历和内存分配操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:12:00