【问题标题】:Autocomplete case issue自动完成案例问题
【发布时间】:2017-10-10 21:02:16
【问题描述】:

在 Visual Studio (Community 2017) 中编写 C# 时,当我有两个名称相似的标识符(一个以大写字母开头,一个以小写字母开头)时,有时我开始输入小写它会自动完成大写标识符。

这通常发生在我将小写参数分配给大写字段/属性时,例如:

当我开始输入my... 时,它匹配小写的myValue,直到我输入v,此时它开始匹配大写的MyValue。显然我不想要这个,因为那样我最终会得到MyValue = MyValue!有没有什么方法可以让它根据 仅第一个字母 的大小写而不是它现在正在做的任何事情来解决大小写歧义?如果我开始输入小写字母,那么我希望它在我输入更多字符时继续匹配以小写字母开头的标识符。

编辑:这是一个匹配类型而不是变量的示例。我输入了完整的参数名称,大小写正确,它仍然匹配类型而不是变量:

【问题讨论】:

  • 根据 C# 编码标准,字段无论如何都应命名为小写。那么你的代码就会变成this.myValue = myValue
  • 你在开玩笑吗?两个标识符不同仅以防万一?这不是一个明智的选择。
  • 不管是字段还是属性都无所谓。这只是一个玩具示例;如果它是一个属性,也会发生同样的行为。
  • 史蒂夫:你建议我改成myValue 什么名字?我可以在 .NET 参考源中找到更糟糕的示例:referencesource.microsoft.com/#System.Drawing/commonui/System/…
  • @Steve 这是一个常见的约定(例如对于字段和属性),虽然我个人不喜欢也不使用它 - 这一点也不奇怪。

标签: c# visual-studio autocomplete intellisense


【解决方案1】:

我同意。这是我在这个问题上写的。

请让智能感知区分大小写。 当我键入 myV 时,它应该选择 myValue 而不是 MyValue。 当我输入 Myv 时,它应该选择 MyValue 而不是 myValue。

这里是关键:当用户费心使用 shift 键将字母大写时,他们想要使该字母大写的变量或成员。 如果你们能做到这一点,我会高兴死的。请。

【讨论】:

    【解决方案2】:

    对于您的第一个示例,我在本地进行了测试,结果如下图所示,我发现预先选择的完成列表取决于“最近使用的成员”,请检查这个:Visual C# IntelliSense

    IntelliSense 会记住您最近在弹出的成员列表框中选择的成员,以便自动完成对象名称。下次使用成员列表时,最近使用的成员会显示在顶部。

    对于您的第二个示例,我得到的结果与您的相同。由于我们尝试在‘()’中键入代码,并且我假设 VS 过滤完成列表是按照一些特定的规则或原则进行的,我们也可以从上述文档中找到规则。

    如果您对此智能感知有一些建议或想法,请前往帮助-发送反馈-提供建议……分享给 VS 产品团队,他们愿意听到不同的建议和用户的声音。

    【讨论】:

      【解决方案3】:

      我认为您可能对 Visual Studio 的选择行为有误:根据我的经验,Visual Studio 会不区分大小写地选择我上次使用的那个,或者如果没有发生使用,则默认选择列表中的第一个。

      如果我在您的情况下输入了myv,以前从未写过它,它将默认为 MyValue(列表中的第一个)。

      如果我选择第二个(myvalue)然后立即写= myv VS 会建议我第二次表示myValue,因为我第一次使用myValue..

      也就是说,我确定我从未见过的一件事:区分大小写的智能感知,绝对不是“区分大小写的第一个字符,不敏感的其他字符”智能感知..

      【讨论】:

      • 我看过了。 VS 几年前就停止了,可能是 VS2013。从那以后,它让我疯狂地想念它。
      猜你喜欢
      • 1970-01-01
      • 2014-07-20
      • 1970-01-01
      • 2011-07-18
      • 2013-02-13
      • 2010-12-04
      • 2011-08-08
      • 2013-01-22
      相关资源
      最近更新 更多