VS 正在提出这个建议。为什么distinct出现两次?

VS is making this suggestion. Why does distinct appear twice?

我对 Visual Studio 提出的建议有疑问。我有一个 class 宽的字符数组,我在其中放置允许用户输入的字符。这种情况已经发生了。我不希望任何字符出现多次,因此有这段代码。

Dim result As IEnumerable(Of Char) = erlaubte_Zeichen.Distinct()
erlaubte_Zeichen = New Char(result.Count - 1) {}
erlaubte_Zeichen = result.ToArray()

VS现提出此改进建议。 为什么distinct出现两次?

erlaubte_Zeichen = (New Char(erlaubte_Zeichen.Distinct().Count - 1) {})
erlaubte_Zeichen = erlaubte_Zeichen.Distinct().ToArray()

Microsoft Visual Studio 社区 2019 版本 16.11.1

VS 给你一个不好的建议,因为你一开始就写了不好的代码。在您的原始代码中,中间线完全没有意义。第三行创建一个新数组并将其分配给变量,因此您在第二行中创建并分配给变量的数组将被简单地丢弃。这个:

Dim result As IEnumerable(Of Char) = erlaubte_Zeichen.Distinct()
erlaubte_Zeichen = New Char(result.Count - 1) {}
erlaubte_Zeichen = result.ToArray()

可以变成这样:

Dim result As IEnumerable(Of Char) = erlaubte_Zeichen.Distinct()
erlaubte_Zeichen = result.ToArray()

这意味着它冗长得可笑,应该这样写:

erlaubte_Zeichen = erlaubte_Zeichen.Distinct().ToArray()

如果您不包含无用代码,那么 VS 将不会提供建议来提高无用代码的效率。