自动完成案例问题

5
在使用Visual Studio(Community 2017)编写C#代码时,当我有两个名称类似的标识符,一个以大写字母开头,另一个以小写字母开头时,有时当我开始键入小写字母时,它会自动完成大写字母的标识符。这通常发生在将小写参数赋值给大写字段/属性时。例如:

enter image description here

当我开始输入my...时,它匹配小写的myValue,直到我输入v,此时它开始匹配大写的MyValue。显然我不希望这样,因为这样我会得到MyValue = MyValue!有没有办法可以根据第一个字母的大小写来解决大小写歧义,而不是现在所做的?如果我以小写字母开头开始输入,那么我希望它继续匹配以小写字母开头的标识符,当我输入更多字符时。
编辑:这里有一个示例,它匹配的是类型而不是变量。我已经完整地输入了参数名,并使用正确的大小写,但它仍然匹配类型而不是变量:

enter image description here


字段名称无论如何都应该按照C#编码标准使用小写字母。那么你的代码将变为this.myValue = myValue - adjan
2
你在开玩笑吗?只有大小写不同的两个标识符?这真的不是一个明智的选择。 - Steve
无论是字段还是属性都没关系。这只是一个玩具示例;如果它是一个属性,同样的行为也会发生。 - Jeff
Steve:你建议我给myValue取什么名字?在.NET参考源代码中,我甚至可以找到更糟糕的例子:https://referencesource.microsoft.com/#System.Drawing/commonui/System/Drawing/Size.cs,68 - Jeff
1
@Steve 这是一个常见的约定(例如对于字段和属性),尽管我个人不喜欢也不使用它 - 但这一点并不令人惊讶。 - Evk
显示剩余4条评论
3个回答

6

我同意。以下是我对此问题的写作。

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

重点在于:当用户使用换挡键大写字母时,他们希望变量或成员拥有该字母的大写形式。 如果您能实现这个功能,我会非常高兴。拜托了!


1
我认为你可能对Visual Studio的选择行为有误解:根据我的经验,Visual Studio默认情况下会不区分大小写地选择上次使用的那个,如果没有使用过,则选择列表中的第一个。
例如,如果在您的情况下我键入myv,而以前从未写过,它将默认选择MyValue(列表中的第一个)。
如果我选择下面的第二个(myvalue),然后立即输入= myv,VS会建议我再次选择myValue,因为我第一次使用了myValue
尽管如此,我肯定从未见过大小写敏感的智能感知,更不用说"大小写敏感的首字母,不区分其他字符"的智能感知了。

我看过了。Visual Studio 已经停止支持好几年了,可能是从 VS2013 开始的。自那以后一直没有它让我疯狂想念。 - bboyle1234

1
对于您的第一个示例,我在本地测试了它,结果如下截图所示,我发现预选完成列表取决于“最近使用的成员”,请检查此链接:Visual C# IntelliSense enter image description here IntelliSense会记住您在弹出的“成员列表”框中最近选择的成员,以便自动完成对象名称。下次使用Member List时,最近使用的成员将显示在顶部。 对于您的第二个示例,我得到了与您相同的结果。由于我们试图在“()”中键入代码,我假设VS根据某些特定的规则或原则过滤完成列表,我们也可以从上述文档中找到这些规则。
如果您对此智能感知有什么建议或想法,请转到帮助-发送反馈-提供建议...将其分享给VS产品团队,他们乐意听取不同的建议和用户声音。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接