C# 中经过筛选的完成列表

IntelliSense 可通过使用筛选器从完成列表中移除不必要的成员。

Visual C# 将筛选为以下各项显示的完成列表:

  • 接口和基类。

  • 特性。

  • as 和 is 运算符。

  • Catch 子句。

  • 对象初始值设定项

  • String 对象

  • 事件

接口和基类

IntelliSense 会从接口和基类完成列表(位于类声明基和接口列表以及约束列表中)中自动移除各项。 例如,枚举不会出现在基类的完成列表中,因为枚举不能用于基类。 基类的完成列表仅包含接口和命名空间。 如果在列表中选择了一个项,然后键入一个逗号,则 IntelliSense 会从完成列表中移除基类,因为 Visual C# 不支持多重继承。 对于 constraint 子句,也会发生同样的行为。

特性

将某个特性应用于一个类型时,将筛选完成列表,以使该列表仅收入从包含对应类型的命名空间中继承的那些类型,如 Attribute

as 和 is 运算符

对于 as 运算符,将筛选 IntelliSense 完成列表,以便在键入 as 后仅显示引用类型。 此外,键入 as 或 is 关键字后,如果按空格键,将自动显示完成列表。

Catch 子句

对于 catch,IntelliSense 完成列表仅显示相关类型。 这些类型包括从 Exception 派生的类型、包含嵌套类型的类型,以及在从 Exception 派生的类型上受约束的类型。

对象初始值设定项

在完成列表中将仅出现可初始化的成员。 例如:

class Cust
{
    public string Name { get; set; }
    public int Age { get; set; }
}
class MyApp
{
    static void Main()
    {
        var customer = new Cust()
        {
            //Name and Age appear in completion list
            Name = "Sally",
            //Only Age appears in completion list
            Age = 30
        };
    }
}

前面的示例首先创建一个具有两个自动实现的属性的类 Cust。 初始化 Name 属性时,完成列表中仅出现 Name 和 Age。 完成列表将筛选出与初始化对象无关的项。 有关对象初始值设定项的信息,请参见对象和集合初始值设定项(C# 编程指南)

字符串对象

使用 String 对象时,Visual C# 完成列表未显示 IEnumerable 接口中的扩展方法。 这是为了隐藏常用类型的复杂性。

事件

在键入关键字 event(C# 参考)时,完成列表仅包含委托类型。

请参见

概念

C# 中的完成列表

C# 中预选择的完成列表项

其他资源

Visual C# IntelliSense