Контекстные действия

Контекстные действия ReSharper избавят вас от необходимости много печатать, когда нужно внести небольшие изменения в код. Изменить модификаторы доступа, сгенерировать проверку на null, преобразовать foreach в for и обратно можно всего за пару нажатий. В ReSharper предусмотрено более 450 контекстных действий для C#, VB.NET, XAML, ASP.NET, JavaScript, TypeScript и других поддерживаемых языков. Поместите курсор на элемент кода, который хотите изменить, нажмите Alt+Enter и выберите нужное контекстное действие.

Контекстные действия в ReSharper

Применение контекстных действий

Когда в текущем положении курсора доступно контекстное действие, слева появляется значок молотка Индикатор контекстного действия ReSharper. Если в одном и том же месте можно применить несколько разных контекстных действий и быстрых исправлений — отобразится значок действия с наивысшим приоритетом. Кликните по значку или нажмите Alt+Enter, чтобы увидеть все доступные действия.

Схожие контекстные действия (например, для разных модификаторов доступа) часто сгруппированы вместе. В этом случае, чтобы выбрать нужное действие, разверните группу, используя стрелку вправо.

Применение контекстных действий в более широкой области (в файле, проекте, по всему решению)

Применение контекстных действий в более широкой области

Некоторые контекстные действия (Remove #regions, Specify enum member values, Add name to argument) могут автоматически применяться в более широком контексте: в текущем методе, классе, файле, проекте или по всему решению. Кликните по значку стрелки или нажмите клавишу со стрелкой вправо на клавиатуре, чтобы выбрать область, в которой следует произвести преобразования.

Быстрые исправления или контекстные действия

Контекстные действия или быстрые исправления

Вместе с контекстными действиями в раскрывающемся списке могут отображаться быстрые исправления. Разница проста: ReSharper предлагает быстрые исправления только для подсвеченных проблем с целью улучшения вашего кода, в то время как контекстные действия представляют собой мини-рефакторинги, которые просто преобразовывают код.

Важно отметить, что быстрые исправления имеют более высокий приоритет, поэтому, если в том месте, где находится курсор, предлагаются быстрые исправления, то чтобы увидеть контекстные действия, необходимо нажать Alt+Enter.

Введение проверки на null в C# с помощью контекстного действия

C#: проверка параметра на null Пример

Благодаря ReSharper для проверки параметра на null не нужно что-либо печатать, достаточно нажать сочетание клавиш Alt+Enter, в результате ReSharper сгенерирует весь код проверки на null автоматически.

Если же в проекте используются аннотации кода JetBrains, параметр маркируется атрибутом [NotNull] и ReSharper предупреждает обо всех вызовах метода, где в этот параметр передается null.

Преобразование LINQ в код с помощью контекстного действия ReSharper

C#: преобразование LINQ в код Пример

В этом примере показано, как с помощью контекстных действий ReSharper быстро преобразовать запрос LINQ в цикл foreach и лямбда-выражение.

Это действие является обратным по отношению к знаменитому быстрому исправлению ReSharper для преобразования циклов в операторы LINQ.

Преобразование итераторов в коллекции с помощью контекстного действия ReSharper

C#: преобразование итераторов в коллекции Пример

Некоторые контекстные действия больше похожи на рефакторинги: они автоматизируют сложные преобразования кода, сохраняя логику неизменной.

В этом примере ReSharper используется для преобразования итератора с операторами yield return в код, который создает, наполняет и возвращает коллекцию.

Разделение объявления и присвоения с помощью контекстного действия ReSharper

C#: разделение объявления и присвоения Пример

Если требуется добавить условие к инициализации существующей локальной переменной, это контекстное действие позволяет быстро отсоединить инициализацию. Даже если переменная имеет неявный тип, ReSharper автоматически вычисляет правильный тип и использует его в объявлении.

Инверсия выражения «if» с помощью контекстного действия ReSharper

C#: инверсия инструкции 'if' Пример

Это контекстное действие позволяет быстро поменять местами ветви выражения if. ReSharper позаботится, чтобы условие, каким бы сложным оно ни было, инвертировалось должным образом и логика оставалась неизменной.

Преобразование анонимного метода в лямбда-выражение и наоборот с помощью контекстного действия ReSharper

C#: преобразование анонимного метода в лямбда-выражение и наоборот Пример

Какой бы синтаксис ни использовался для делегата (анонимный метод или лямбда-выражение), контекстные действия ReSharper позволяют изменить синтаксис парой клавиш, не переписывая код вручную.

Создание перегрузки в VB.NET с помощью контекстного действия

VB.NET: создание перегрузки без параметра Пример

Это контекстное действие позволяет создать перегрузку метода, использующую значение по умолчанию для выбранного параметра — опять-таки, без ввода кода вручную.

Это действие также доступно для C# и TypeScript.

Преобразование в шаблонный литерал JavaScript с помощью контекстного действия

JavaScript: преобразование в шаблонную строку Пример

ReSharper предоставляет около 50 контекстных действий для JavaScript. Многие из них аналогичны контекстным действиям для C#, однако немало и таких, которые предназначены исключительно для синтаксиса JavaScript. Например, следующее контекстное действие позволяет преобразовать конкатенацию переменных и строковых литералов в шаблонный литерал.

Введение псевдонима типа TypeScript с помощью контекстного действия

TypeScript: введение/встраивание псевдонима тип Пример

В TypeScript можно использовать все контекстные действия для JavaScript плюс еще около 20 специально предназначенных для TypeScript. Например, с помощью контекстных действий можно управлять псевдонимами для простых типов, пересечений и объединений.

Контекстные действия ReSharper в XML-подобном коде

Контекстные действия в XML-подобном коде Пример

В языках, подобных XML, контекстные действия ReSharper помогают усовершенствовать рутинную деятельность при редактировании: развертывание и свертывание пустых тегов, а также преобразование атрибутов в теги и наоборот. Эти действия доступны для файлов XML, XAML, ASP.NET, скриптов сборки, HTML и Resx.

Настройка контекстных действий

Настройка контекстных действий

Если вы не хотите, чтобы ReSharper отображал какое-то контекстное действие в меню, отключите его в диалоговом окне ReSharper Options.