【问题标题】:Prevent (Of …) auto completion in the Visual Basic editor在 Visual Basic 编辑器中防止 (Of ...) 自动完成
【发布时间】:2017-05-28 21:21:43
【问题描述】:

复制

  1. 开始VS 2015
  2. 创建一个新的 VB.NET 控制台应用程序
  3. 在 Sub Main() 中开始输入:

    Dim s = {"a", "b"}
    s.Se
    
  4. 发现 Visual Studio 提供了 Select 扩展方法,这很有帮助:

  1. 点击( 自动完成并开始为方法提供参数。

实际结果s.Select(Of …)()

想要的结果s.Select()

我不想要 (Of …) 部分,因为在 99% 的情况下,如果没有它,类型推断工作得非常好,而且它会弄乱我的代码。有没有办法告诉自动完成不要这样做?

注意:显然,这个“问题”只影响Enumerable.Select(Of T)Enumerable.SelectMany(Of T) 扩展方法。 Enumerable.Cast(Of T) 和自定义 Select(Of T) 扩展方法可以正常工作(没有 (Of …))。

【问题讨论】:

  • 如果你按TAB 而不是( VS 自动完成到s.Select。然后键入( 并从参数开始。
  • 我不喜欢这样输入,特别是考虑到 2015 年之前的所有 VS 都不添加 Of
  • 从插入符号在Select(Of ...)( 之后的事实来看,而不是留在Of 之后的第一个括号之间,我相信这是一个错误,它插入了自动完成列表元素的Text进入编辑器而不是Value。它确实使输入代码烦人到了愤怒的程度。
  • @GSerg:我同意,它看起来像一个错误。我创建了一个 MS 连接条目:connect.microsoft.com/VisualStudio/feedback/details/3118772
  • 对我来说,在自动完成列表中的所有通用方法中,只有 CastOfType 可以正常工作,其他所有方法都使用 Of。顺便说一句,这两个是唯一在列表右侧显示正确帮助工具提示的工具,其他显示空工具提示(也可以在您的屏幕截图中看到,列表右上角的小凸起)。跨度>

标签: vb.net visual-studio-2015


【解决方案1】:

Visual Studio 中的智能感知根据数据类型选择自动完成功能。

下面的声明将 s 声明为一个对象。

Dim s = {"a", "b"}

这就是智能感知列表显示与对象相关的功能的原因。如下所示声明 s 以获得正确的列表。

Dim s As string = {"a", "b"}

【讨论】:

  • The declaration below declares s as an object - 在旧版本的 VB.NET 中,是的。在问题中讨论的版本中,s 被声明为String()(字符串数组),因此是问题的前提。如果它被声明为 Object,那么整个问题就没有意义了。
猜你喜欢
  • 2021-04-24
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多