Поделиться через


Фильтрованные списки завершения в C#

Обновлен: Ноябрь 2007

При помощи фильтров IntelliSense удаляет ненужные члены из списка завершения.

В Visual C# фильтруются списки завершения для следующих элементов:

  • Интерфейсы и базовые классы.

  • Атрибуты.

  • Операторы as и is.

  • Предложения "catch".

  • Инициализаторы объектов

  • Объекты String

  • События

Интерфейсы и базовые классы

IntelliSense автоматически удаляет элементы из списков завершения интерфейсов и базовых классов (включая как базовые списки объявления классов, так и списки интерфейсов). Например, перечисления не отображаются в списке завершения для базовых классов, так как перечисления для базовых классов не используются. Список завершения базовых классов содержит только интерфейсы и пространства имен. Если в списке выбрать элемент и затем ввести запятую, IntelliSense удалить базовый класс из списка завершения, поскольку Visual C# не поддерживает множественное наследование. Такое же поведение наблюдается у предложений ограничения.

Атрибуты

При применении атрибута к типу список завершения фильтруется таким образом, что содержит только типы, полученные из пространств имен с этими типами, например 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#

Другие ресурсы

IntelliSense для Visual C#