C# IntelliSense 是特定于语言的代码完成助手。 在代码编辑器中编写 C# 代码并在 “即时模式 ”命令窗口中对其进行调试时,可以使用它。
完成列表
C# 中的 IntelliSense 完成列表包含列表成员、完成 Word 等中的令牌。 它提供快速访问:
类型或命名空间的成员
变量、命令和函数名称
代码片段
语言关键字
扩展方法
C# 中的完成列表根据上下文筛选掉不相关的标记和预选标记。 有关详细信息,请参阅 筛选完成列表。
完成列表中的代码片段
在 C# 中,完成列表包含代码片段,可帮助你轻松地将预定义的代码主体插入程序。 代码片段在完成列表中显示为代码段的 快捷文本。 有关 C# 中默认可用的代码片段的详细信息,请参阅 C# 代码片段。
完成列表中的语言关键字
完成列表包含 C# 语言关键字,可帮助你将其插入程序中。 有关 C# 语言关键字的详细信息,请参阅 C# 关键字。
完成列表中的扩展方法
在 C# 中,完成列表包括作用域中的扩展方法。
扩展方法使用不同于实例方法的图标。 当具有相同名称的实例方法和扩展方法同时位于范围内时,完成列表将显示扩展方法图标。
注释
对于 String 对象,完成列表不显示所有扩展方法。
筛选的完成列表
IntelliSense 使用筛选器从完成列表中删除不必要的成员。 C# 筛选为以下项显示的完成列表:
接口和基类:IntelliSense 自动从接口和基类完成列表中删除不必要的项,此删除包括类声明基、接口列表和约束列表。 例如,枚举不会显示在基类的完成列表中,因为枚举不能用于基类。 基类的完成列表仅包含接口和命名空间。 如果选择列表中的项,然后键入逗号键,IntelliSense 将从完成列表中删除基类。 这样做是因为 C# 不支持多个继承。 约束子句也会发生相同的行为。
属性:向类型应用属性时,将筛选完成列表,以便列表仅包含那些从包含这些类型的命名空间降序的类型。 例如,Attribute。
Catch 子句:完成列表中仅显示有效的 try-catch 关键字。
对象初始值设定项:仅可初始化的成员显示在完成列表中。
new 关键字:键入
new并按 空格 键时,将显示完成列表。 IntelliSense 根据代码中的上下文自动选择列表中的项。 例如,IntelliSense 会自动在完成列表中为声明选择项,并在方法中选择 return 语句。枚举关键字:在枚举分配的等号后按 空格 键时,将显示完成列表。 IntelliSense 根据代码中的上下文自动选择列表中的项。 例如,键入关键字和声明后
return,IntelliSense 会自动选择完成列表中的项。作为运算符和运算符:键入或
is关键字后as按 Space 键时,IntelliSense 会自动显示筛选的完成列表。事件:键入关键字
event时,完成列表仅包含委托类型。参数帮助:IntelliSense 会自动排序到与输入参数匹配的第一个方法重载。 如果有多个方法重载可用,则可以使用向上和向下箭头导航到列表中的下一个可能的重载。
最近使用的成员
IntelliSense 会记住最近在弹出 列表成员 框中选择的成员,以便自动完成对象名称。 下次使用 成员列表时,最近使用的成员将显示在顶部。 IntelliSense 清除每个 Visual Studio 会话之间最近使用的成员的历史记录。
替代
键入 替代 ,然后按 空格 键时,IntelliSense 将显示可在弹出列表框中重写的所有有效基类成员。 在提示 IntelliSense 后 override 键入方法的返回类型,以仅显示返回相同类型的方法。 如果 IntelliSense 找不到任何匹配项,则会显示所有基类成员。
AI 增强型 IntelliSense
Visual Studio IntelliCode 提供人工智能增强型 IntelliSense 完成列表。 IntelliCode 预测要使用的最可能正确的 API,而不仅仅是显示按字母顺序排列的成员列表。 它使用当前的代码上下文和模式来提供动态列表。
自动生成代码
添加 using
使用 IntelliSense作 添加 会自动向代码文件添加所需的 using 指令。 此功能使你能够保持对所编写代码的焦点,而无需将焦点转移到代码的另一部分。
若要启动 “添加”作 ,请将光标置于无法解析的类型引用上。 例如,在创建控制台应用程序并添加到 XmlReader 方法的 Main 正文时,代码行上会显示一条红色波浪线,因为无法解析类型引用。 然后,可以通过“快速作”菜单调用“添加”作。 仅当游标定位在未解析的引用上时, 才显示 using <命名空间> 菜单项。
对于此示例,若要自动将 using 指令添加到代码,请选择错误灯泡图标,然后选择 使用 System.Xml;。
在粘贴时添加缺少 using 指令
将类型粘贴到代码文件时,IntelliSense 会自动向代码添加缺少 using 的指令。 此功能通过在将类型粘贴到文件时自动执行添加缺少的 using 指令的任务,从而节省时间。
若要启用此功能,请执行以下作:
- 选择“工具”“选项”。
- 从左窗格中选择 文本编辑器>C# (或 Visual Basic) >高级 。
- 在 “Using 指令”下,选择 “在粘贴时添加缺少 using 指令”。
删除和排序 using
“删除和排序 Usings”选项对和删除using和声明进行排序,extern而无需更改源代码的行为。 随着时间的推移,由于不必要的无组织 using 指令,源文件可能会变得太大且难以读取。
“删除和排序 Usings”选项通过删除未使用的指令来压缩源代码,并通过对源代码using进行排序来提高可读性。
若要使用此选项,请从菜单栏中选择 “编辑>IntelliSense>排序方式 ”,或在代码编辑器中右键单击,然后选择“ 删除”和“排序方式”。
实现接口
IntelliSense 提供了一个选项,可帮助你在代码编辑器中工作时实现 接口 。 通常,若要正确实现接口,必须为类中接口的每个成员创建方法声明。 在类声明中键入接口的名称后,IntelliSense 会显示 快速作 灯泡。 灯泡提供使用显式或隐式命名自动实现接口的选项。 在显式命名下,方法声明承载接口的名称。 在隐式命名下,方法声明不会指示它们所属的接口。 显式命名的接口方法只能通过接口实例访问,而不能通过类实例访问。 有关详细信息,请参阅 显式接口实现。
实现接口生成满足接口所需的最小方法存根数。 如果基类实现接口的某些部分,则不会重新生成这些存根。
实现抽象基类
IntelliSense 提供了一个选项,可帮助你在代码编辑器中工作时自动实现抽象基类的成员。 通常,若要实现抽象基类的成员,需要为派生类中抽象基类的每个方法创建新的方法定义。 在类声明中键入抽象基类的名称后,IntelliSense 会显示 快速作 灯泡。 灯泡提供自动实现基类方法的选项。
实现抽象基类功能生成的方法存根由文件 MethodStub.snippet 中定义的代码片段建模。 代码片段是可修改的。 有关详细信息,请参阅 演练:在 Visual Studio 中创建代码片段。
从使用情况生成
使用 “生成使用情况” 功能,可以在定义类和成员之前使用类和成员。 可以为要使用的任何类、构造函数、方法、属性、字段或枚举生成存根,但未定义。 无需在代码中离开当前位置即可生成新类型和成员。 这样做可以最大程度地减少工作流的中断。
每个未定义的标识符下会显示一条红色波浪线。 将鼠标指针悬停在标识符上时,工具提示中会显示一条错误消息。 若要显示适当的选项,请使用下列过程之一:
选择未定义的标识符。 “ 快速作” 错误灯泡显示在标识符下。 选择错误灯泡。
选择未定义的标识符,然后按 Ctrl+Period (.)。
右键单击未定义的标识符,然后选择 “快速作”和“重构”。
可以显示以下选项:
Generate 属性
生成字段
Generate 方法
生成类
生成新类型 (对于类、结构、接口或枚举)
生成事件处理程序
在代码编辑器中,IntelliSense 可以帮助你将方法(事件处理程序)挂接到事件字段。
在.cs文件中的事件字段后键入+=运算符时,IntelliSense 会提示你按 Tab 键的选项。 这会插入指向处理事件的方法的委托的新实例。
如果按 Tab 键,IntelliSense 会自动完成语句,并在代码编辑器中将事件处理程序引用显示为所选文本。 若要完成自动事件挂钩,IntelliSense 会提示再次按 Tab 键,为事件处理程序创建空存根。
如果再次按 Tab 键,IntelliSense 会添加一个具有正确签名的方法存根,并将光标置于事件处理程序的正文中。
如果 IntelliSense 创建的新委托引用了现有的事件处理程序,IntelliSense 将在工具提示中传达此信息。 然后,可以修改此引用;代码编辑器中已选择文本。 否则,自动事件挂钩现已完成。
注释
使用“视图”菜单上的“向后导航”命令返回+-事件挂钩语句。